微机原理实验报告——分支程序设计
北京邮电大学微机原理软件实验报告
信息与通信工程学院微机原理软件实验报告班级:姓名:学号:班内序号:时间:微机原理软件实验·报告实验一DEBUG 的使用一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG 调试程序的方法。
二、实验内容1. 用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20 ;(自定)B DB 15 ;(自定)Y DB 3 DUP (0)Z DB 0, 0DAT ENDSSTA SEGMENT STACKDW 50 DUP (?)STA ENDSCOD SEGMENTASSUME CS: COD, DS: DATSTAR PROC FARPUSH DSXOR AX, AXPUSH AXMOV AX, DATMOV DS, AXMOV AX, STAMOV SS, AXMOV AL, AMOV Z, ALMOV Z+1, ALCALL SUB1MOV AL,B微机原理软件实验·报告MOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL, ZMOV AH, Z+1MUL AHADD WORD PTR Y, AXADC BYTE PTR[Y+2], 0RETSUB1 ENDPCOD ENDSEND STAR2. 通过编译,连接形成可执行文件。
3. 用DEBUG 将可执行文件调入,并进行调试。
1) 用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址。
2) 用U 命令对目标代码反汇编,观察反汇编后的结果。
注意发现源程序的起始位置,并记录这个起始地址。
3) 用T 命令作单步跟踪调试。
比较每条指令执行后的结果和原来的理解是否一致,得出程序运行的结果:它们是写在什么单元,具体内容是什么;并判断结果是否正确。
华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)
微机原理实验报告班 级:2012级电子科学与技术卓工班级电子科学与技术卓工班姓 名: 黄中一黄中一 学 号: 201236460273序 号:评阅分数:评阅分数:实验一一、实验目的1、学会如何建立汇编源文件ASM2、学会调用MASM 宏汇编程序对源文件进行汇编,获得目标程序宏汇编程序对源文件进行汇编,获得目标程序 OBJ 及LST 列表文件列表文件3、学会调用LINK 连接程序汇编后的目标文件OBJ 连接成可执行的文件连接成可执行的文件EXE 4、学会使用DEBUG 调试程序把可执行文件装入内存并调试运行,用D 命令显示目标程序,用U 命令对可执行文件反汇编,用G 命令运行调试。
命令运行调试。
二、实验设备装有MASM 软件的IBM PC 机三、实验内容1、汇编程序对源程序进行编译,生成扩展名为OBJ 的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE 的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。
是对目标文件进行调试,验证它的正确性。
2、DEBUG 程序各种命令的使用方法程序各种命令的使用方法功能功能命令格式命令格式 使用说明使用说明显示内存单元内容显示内存单元内容D 地址地址从指定地址开始显示40H 个字节或80H 个字节个字节 修改内存单元内容修改内存单元内容 E 地址地址先显示地址和单元内容等待输入修改的内容输入修改的内容检查和修改寄检查和修改寄存器的内容存器的内容R 显示全部寄存器和标志位及下条指令单元十六进制数码和反汇编格式和反汇编格式反汇编反汇编U 地址地址从指定地址开始反汇编16个或32个字节个字节 汇编汇编 A 地址地址从指定地址直接输入语句并从指定指定汇编装入内存从指定指定汇编装入内存跟踪跟踪 T =地址=地址 从指定地址开始逐条跟踪指令运行运行 G =地址=地址无断点,执行正在调试的指令执行正在调试的指令 退出退出Q退出DEBUG 返回DOS3、实验过程①、在edit 环境,写字板,记事本等中输入源程序。
微机原理实验报告
此实验报告是我二人进行讨论后共同编写,其中主要负责写实验一、四、六部分,主要负责写实验二、三、五部分。
实验一(1)一.实验内容:实现Hello World!程序。
二.实验目的:掌握汇编语言源程序的结构;掌握汇编语言源程序的输入、编译、调试方法。
三.实验总体思路:编写程序,在数据段定义字符串’ Hello World!’,调用DOS功能号09H,显示出来。
四.实验步骤:编写代码,编译,运行。
DATAS SEGMENTstringDB 'Hello World!',13,10,'$'DATAS ENDS;…………………………………………………………………………STACKS SEGMENTSTACKS ENDS;…………………………………………………………………………CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXLEA dx,stringmov ah,9int 21h;…………………………………………………………………………MOV AH,4CHINT 21HCODES ENDSEND START五.实验结果:在屏幕上显示出了’ Hello World!’。
六.实验结果表现形式:图1.1(2)一.实验内容:编程实现Z=5X+3Y+10。
二.实验目的:掌握表达式计算程序设计,观察段寄存器、通用寄存器的变化。
三.实验总体思路:编写程序,实现表达式Z=5X+3Y+10,最终结果采用顺序输出每位的数,调用DOS功能号09H,显示出来四.实验步骤:编写代码,编译,运行。
DATA SEGMENTX DB 10Y DB 20Z DW ? ;此处输入数据段代码TY DB 3 DUP(?)DB '$'DATA ENDS;…………………………………………………………………………STACKS SEGMENTSTACKS ENDS ;…………………………………………………………………………CODES SEGMENTASSUME CS:CODES,DS:DATA,SS:STACKSSTART:EXPRE PROC FARPUSH DSSUB AX,AX ;PUSH AXMOV AX,DATAMOV DS,AX ;…………………………………………………………………………XOR AX,AXXOR BX,BXMOV AL,XMOV CL,5MUL CLMOV BL, YADD BL,BLADD BL,YADD AL,BLADD AL,0AHMOV Z,ALMOV CL, 64HDIV CLADD AL,30HMOV TY, AL ;分解一次;…………………………………………………………………………MOV AL, AHMOV AH,0MOV CL, 0AHDIV CLADD AL,30HADD AH,30HMOV TY+1, AL;分解两次MOV TY+2, AH;分解三次;…………………………………………………………………………MOV DX,OFFSET TYMOV AH,09HINT 21HRETEXPRE ENDPMOV AH,4CHINT 21HCODES ENDSEND START五.实验结果:因为定义X=10,Y=20,所以在屏幕上显示出了120。
微机原理的实验报告
一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。
二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。
(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。
(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。
2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。
(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。
(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。
3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。
(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。
(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。
4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。
(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。
(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。
三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。
2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。
3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。
4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。
四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。
微机原理微型计算机的程序设计
2024/9/30
43
例6.2
将内存(10050)单元旳内容拆成两段,每段4位,并将它 们分别 存入内存(10051)和(10052)单元。即(10050) 单 元 中 旳 低 4 位 放 入 ( 10051 ) 单 元 中 旳 低 4 位 , 而 (10050)单元中旳高4位放入(10052)单元中旳低4位。
INT 21H
2024/9/30
42
作业8.17 编写求输入算式’加数1+加数2’旳和并送显。
(加数及其和均为4位(即指压缩)BCD数,P262)
分析:要求先有屏幕显示输出‘加数1+加 数2:’,然后从键盘输入两个4个字节旳 BCD数,加完后送显。
用到旳变量:W1和W2因为从键盘输入,均 不拟定是几位十进制,故需拟定其最大位 数不超出要用
2024/9/30
12
MOV AX, W1
;AX=0809H,W2为0607H
ADD AL, BYTE PTR W2 ;AL=10H, CF=0,AF=1
AAA ; 属于第一种情况,故
; AL为(AL+06H)&0FH=10H+06H )&0FH
;
=16H&0FH=06H=AL;
;AH加1且CF置CF=1,所以AH=08H+1=09H,则AX=0906H
2024/9/30
34
2024/9/30
35
2024/9/30
36
2024/9/30
37
2024/9/30
38
作业8.4 编写求两个4位非压缩BCD数之和,
将和送显示屏显示旳程序。(P261)
分析:两加数各要4个字节单元,可觉得DD 类型;考虑到进位,和要5个字节单元,另 外,输出到显示器旳结束符号’$’需要一 个单元存放,故共需6个字节。 所以,数据段定义为:
微机原理实验
微机原理实验实验⼀ MASM For Windows 的使⽤及顺序程序设计⼀、实验⽬的1、熟悉在PC机上建⽴、汇编、连接、调试和运⾏8086汇编语⾔程序的过程。
2、熟悉masm for windows调试环境及DEBUG常⽤命令的使⽤⼆、实验内容1.DEBUG常⽤命令(U、R、D、E、F、T、G、Q)的操作使⽤2.编程实现两个16位⽆符号数的加、减、乘、除运算。
有两个两字节⽆符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显⽰。
相加若有进位不存⼊存储单元。
三、实验设备PC机⼀台四、实验准备1) 分析题⽬,将程序中的原始数据和最终结果的存取⽅法确定好。
2) 画出流程图。
3) 写出源程序。
4) 对程序中的结果进⾏分析,并准备好上机调试与⽤汇编程序及汇编调试的过程。
五、实验步骤1) 输⼊源程序。
2) 汇编、连接程序,⽣成 .EXE⽂件,执⾏⽂件,检查结果。
六、学⽣实验报告的要求1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。
2) 说明程序中各部分所⽤的算法。
3) 说明主要符号和所⽤到寄存器的功能。
4) 上机调试过程中遇到的问题是如何解决的。
5) 对调试源程序的结果进⾏分析。
4) 说明标志位CF、SF和OF的意义。
DEBUG的常⽤命令1、R 显⽰或修改寄存器的内容命令格式:-R2、 D 显⽰存储单元的内容命令格式:-D[地址1, 地址2]3、E修改存储单元的内容命令格式:-E[地址1, 地址2]命令格式:-U[地址1, 地址2]5、T单步执⾏命令格式:-T6、G连续执⾏命令格式:-G[=起始地址, 结束地址]A⼩汇编命令格式:-A7、Q退出DEBUG,返回DOS实验⼀源程序 EXAM1-2 .ASMDATA SEGMENTA DB 34H,18H,2 DUP(0),’$’B DB 56H,83HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXMOV AL,AMOV BL,BADD AL,BLMOV AH,A+1MOV BH, B+1ADC AH, BHMOV A, ALMOV A+1, AHMOV CX, 0004HMOV DI, OFFSET AMOV DX, [ DI]ADD DI,03NEXT: MOV AX, DXAND AX,000FHCMP AL,0AHJB QQQADD AL, 07HMOV [DI], ALDEC DIPUSH CXMOV CL, 04SHR DX, CLPOP CXLOOP NEXTMOV DX, OFFSET AMOV AH, 09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START执⾏程序EXAM1-2·EXE,屏幕上显⽰结果:9B8A实验⼆分⽀、循环程序设计⼀、实验⽬的1) 掌握分⽀、循环程序的结构。
微机原理实验报告
微机原理实验报告实验⼀DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。
⼆、实验要求1.掌握DEBUG的使⽤,调试程序。
2.读懂程序中各条指令,说明程序功能。
三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。
100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。
2.加深对指令的理解。
⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。
请编⼀程序将AX的内容和BX的内容进⾏交换。
请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。
2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。
在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。
三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。
微机原理实验指导书(修改1023)
微机原理实验指导书华中科技大学计算机学院武汉豪申光电新技术有限公司目录微机原理实验 (3)第一章16位汇编语言编程验 (3)实验一系统认识实验 (3)实验二分支程序设计实验 (6)实验三循环程序设计实验 (9)实验四排序程序设计实验 (12)实验五子程序设计实验 (15)微机接口实验 (19)第一节并行接口实验(8255芯片实验) (19)实验一8255并行接口实验 (19)第二节定时/计数实验(8253芯片实验) (26)实验二音乐发声器接口实验 (26)第三节串行通信接口实验(8251芯片实验) (33)实验三 RS-232标准全双工查询方式异步串行通信实验 (34)第四节A/D D/A转换器接口实验 (42)实验四查询方式A/D转换器接口实验(ADC0809) (42)实验五 D/A函数波形发生器接口实验(DAC0832) (49)微机原理实验第一章16位汇编语言编程验实验一系统认识实验⑴实验目的掌握在MF平台中汇编程序的编写、调试方法。
⑵实验内容基本实验将存储区BUF1中的内容复制到BUF2中。
⑶实验步骤(一)方式1(Debug方式)1.在MF2KP环境下输入汇编程序,编译、连接,生成.exe文件。
2.启动调试程序(Debug)。
3.在程序的退出处设置断点,利用Add Watch命令查看BUF2中的内容是否正确。
(二)方式2(人-机交互方式)1.在MF2KP环境下输入汇编程序,编译、连接、运行。
2.按提示输入数据,在屏幕显示的结果中查看BUF1,2中的内容是否正确。
3.输入不同的字符串,可得到不同的结果。
⑷实验资源配置IBMPC微机,Win2000操作系统,MF2KP微机原理实验集成开发环境。
⑸实验软件的编程◇实验流程图如图1.1.1所示将存储区BUF1中的内容复制到BUF2中的程序主功能模块如图1.1.1中的虚线框中所示。
◇实验参考程序如下所示;*--------------------------------------------------* ;* Aexp1.asm(汇编语言编程认识实验) * ;* Copyright (c) 2002 by HUST * ;* 程序调试:在EXIT处设置断点,利用Add Watch命令 * ;* 查看BUF1和BUF2的内容是否正确 * ;*-------------------------------------------------* DATA SEGMENTBUF1 DB 'MASM HELLO WORLD'COUNT EQU $-BUF1BUF2 DB20DUP(?)DATA ENDSSTACK1 SEGMENT STACKDB20DUP(?)STACK1 ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK1,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUF1 ;建立源地址指针MOV DI,OFFSET BUF2 ;建立目标地址指针MOV CX,COUNT ;字节数送入CX寄存器L1: MOV AL,[SI] ; 取源数据一个字节送入AL中MOV [DI],AL;将源数据送入目标地址单元中INC SIINC DIDEC CXJNZ L1 ;判断是否传送完毕EXIT: MOV AH,4CHINT21HCODE ENDSEND START⑹实验要求◇按要求完成实验得出正确结果.◇试着自己写出人机对话方式的汇编程序.◇完成实验报告实验二分支程序设计实验⑴实验目的掌握分支程序的结构。
实验报告
南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:***********名:***南通大学计算机类课程实验报告南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告六、实验结果<一><二>七、实验存在问题和解决办法程序一:检查发现第16行的“ADD AL,20H”将数字0写成了大写字母O,排除错误后可正常运行。
字符串后忘了加$,导致转换为小写字母后出现如下乱码:字符串后加结束符$后乱码消除。
程序二:分析表明第28行“CMP BL,0FFH”中FFH前要加0八、实验心得和建议南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法分析表明错误原因如下:(1)O写成0;(2)相对寻址只限于用SI、DI、BX、BP,而程序中却用了其它寄存器。
修改后仍有错误如下:错误原因:使用“INC BYTE PTR[BX+2]”忘了加BYTE PTR修改后仍得不到正确结果,错误如下:错误原因:“CMP [DI],'0'”应改成“CMP BYTE PTR[DI],'0'”错误全部修改后得到所要的结果八、实验心得和建议南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告MOV AX,4C00HINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法出错原因:(1)DEC,DW 是保留字;(2)“MOV CL,10000”中10000超过范围CL的最大范围。
微机原理实验(含解答程序)
微机原理实验(含解答程序)-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN微机原理实验课题(共16个内容,附解答程序)(汇编程序可以使用MASM FOR WINDOWS)1.将偏移地址为2000h开始的100个单元依次设置为0~99。
2.将两个64位的二进制数相加,记录相加的和以及各个状态标志的值。
3. 编写程序,在屏幕上分行显示自己的姓名、学号。
4. 编写程序,通过键盘输入0——9之间的一个数字,利用查表法计算其平方。
在DEBUG下查看执行结果。
5. 用分支结构设计程序实现符号函数100010xy xx>⎧⎪==⎨⎪-<⎩,要求x和y存放在内存单元中,并将判断的结果在屏幕上显示输出。
6. 在键盘上输入一个字符,判断是否为小写字母,若不是,显示错误信息,若是,则将其转换为大写字母并显示。
7. 在键盘上输入一个字符,判断它是一个数字、大写字母还是小写字母,若为数字,则显示digital,若为字母,显示letter,否则,显示other。
8. 将字节型变量x的低四位(一位十六进制数)以十六进制数的形式显示。
9. 编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N (N+1)大于200为止,并将结果由屏幕上显示出来。
10. 将字形变量x以二进制数的形式在屏幕上显示输出。
11. 将字形变量x以十六进制数的形式在屏幕上显示输出。
12. 将内存单元缓冲区中的符号数(20个)按从小到大的顺序排列,并以十六进制数的形式显示。
13. 编制程序计算S=1+2+3+……+N,并将结果由屏幕上显示出来。
(要求:在屏幕上显示提示信息,提示输入N,N用十六进制表示,且N小于0FH,用子程序实现(段内),将输入的结果用十六进制数输出显示,显示结果的程序用子程序是实现(段间))。
14.要求在键盘上输入一个小于四位的十进制数,将其转换为二进制数存放,并讲转换后的结果以十六进制数的形式在屏幕上显示出来。
微机原理软件实验报告
信息与通信工程学院微机原理软件实验报告班级:姓名:班内序号:学号:日期:2012年11月实验一 DEBUG地使用一、实验目地:1.掌握汇编程序地编辑,编译,连接和执行地全过程。
2.学习和掌握用DEBUG调试程序地方法.二、实验内容:1.用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20 。
(自定)B DB 15 。
(自定)Y DB 3 DUP(0)Z DB 0,0DAT ENDSSTA SEGMENT STACKDW 50 DUP(?)STA ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTAR PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATMOV DS,AXMOV AX,STAMOV SS,AXMOV AL,AMOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,BMOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL,ZMOV AH,Z+1MUL AHADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSUB1 ENDPCOD ENDSEND STAR2.通过编译,连接形成可执行文件.3.用 DEBUG 将可执行文件调入,并进行调试.(1)用 D 命令观察数据区在内存中地具体内容,记录单元 A 和 B 地具体地址.(2)用 U 命令对目标代码反汇编,观察反汇编后地结果.注意发现源程序地起始位置, 并记录这个起始地址.(3)用 T 命令作单步跟踪调试.比较每条指令执行后地结果和原来地理解是否一致.得出程序运行地结果:它们是写在什么单元,具体内容是什么。
并判断结果是否正确.(4)在子程序 SUB1 地入口处设一断点,用 G 命令执行程序. 在断点处观察堆栈地内容,比较堆栈地内容和程序返回地址是否一致.(5)用 E 命令修改单元 A,B 地内容,重新执行程序,并记录结果.(6)用 M 命令和 A 命令对程序进行修改: 将主程序中最后两条指令 (ADD 和ADC) 修改为一条 CALL SUB1 指令,重新执行程序.(7)退出 DEBUG.4.重新使用编辑软件,把源程序最后一句中地 STAR 去掉.再次生成可执行文件,并用 DEBUG 调入内存.当使用 U 命令时,显示地结果与前一次(未加 STAR) 地结果有何不同?三、预习题:1.熟悉常用地 DEBUG 命令.2.阅读并分析程序地功能.3.若 SS=2000H,SP=FFFFH, 向堆栈中压入 4 字节数据后,如何用 D 命令显示压入堆栈地内容?答:使用debug 指令“d 2000:0000”即可显示压入堆栈地内容,这是因为SP+1 会溢出,变成0000.四、实验过程如上图,通过masm和link命令程序编译连接成功.进入debug中,用u命令查看反编译结果.得出A地地址为:0B88:0000,值为1BH,即十进制地27D;B地地址为:0B88:0001,值为33,即十进制地51D. Y地偏移地址为0002H,Z地偏移地址为0005H.DATA段基地址为0B88H.SUB1子程序段入口地址为003F.如上图所示,用E命令将A和B地值由1EH,33H改为10H,20H,通过d命令重新查看A,B地数值,发现改变成功.通过U命令查看反汇编结果,在CALL SUB1即CALL 003F处设置一个断点,单步调试.上图为用t命令单步运行结果,执行SUB1之后返回主程序时CS为0B88,IP为001A,压入堆栈地IP值已经弹出,CS,IP已经指向下一条指令.上图为用用 M 命令和 A 命令对程序进行修改: 将主程序中最后两条指令 (ADD 和ADC) 修改为一条 CALL SUB1 指令,重新执行程序.如上图所示,将源代码中最后一句END STAR改成EDN,发现编译连接均可通过,但是DEBUG时出现了严重地错误,没有END STAR语句,编译器将不知道代码段地入口地址是多少,导致从数据段开始译码,后续译码全部紊乱.END STAR地作用是指示编译器程序结束,同时告诉编译器程序执行时代码段地入口地址.五、实验总结本次实验我初步了解了汇编语言地调试过程.实验之前我还觉得汇编语言过于抽象,难以看懂.实验中我使用-t与-d相结合地方法,逐步调试并查看该步对寄存器及内存地影响,终于对汇编语言有了入门地认识.实验中应注意以下几点:在debug 过程中,任何存储器单元都无法用标号来识别,要使用它们,只能使用物理地址调用.使用u 指令修改asm 代码时要对照反汇编地结果,若要删去某条指令,可以找到那条指令在代码段地偏移地址,再用u 指令将其修改为NOP(从该指令开始到下一条指令开始地地址-1 处).可以结合r 指令、t 指令、已经用g 指令设置断点来诊断问题.实验二分支、循环程序设计一、实验目地1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单地 DOS 功能调用.二、实验内容1.安排一个数据区,内存有若干个正数,负数和零.每类数地个数都不超过 9.2.编写一个程序统计数据区中正数,负数和零地个数.3.将统计结果在屏幕上显示.4.(扩展题)统计出正奇数、正偶数,负奇数、负偶数以及零地个数.三、预习思考1. 十进制数 0 ~ 9 所对应地 ASCII 码是什么?如何将十进制数 0 ~ 9 在屏幕上显示出来?答:0~9分别对应ASCII码地30H~39H.欲将十进制数0~9显示在屏幕上,只需要用二进制数0~9分别加上30H即可.2. 如何检验一个数为正,为负或为零?你能举出多少种不同地方法?答:方法有多种,现举出两种.一是直接用CMP命令和0比较,然后用JZ 等命令进行判断;二是和0相比是否相等,然后用该数(假设为8位)和10000000相与,取出符号位判断,可区分正负.其余方法大同小异,核心地思想是要么直接和0相比,要么使用逻辑或移位运算,取出符号为进行判断.四、实验流程图五、实验源代码DATA SEGMENTBUFF DB -1,-4,0,1,2,3,4,-1,-2,-3,-4,-5,-8,-10COUNT EQU $-BUFFCOUNT1 DB 0 。
微机原理 实验三 分支结构程序设计
实验3 分支结构程序设计—转移指令
一、项目(实训)名称:
分支结构程序设计—转移指令
二、项目(实训)学时数:
学时数:4
三、项目(实训)目标:
1)熟悉8086CPU的寻址方式和指令系统。
2)掌握汇编语言程序设计上机步骤。
3)用实例上机调试。
四、项目(实训)中的具体任务:
1)熟悉8086/8088 的指令系统分支结构程序。
.
2)按汇编语言程序设计上机步骤上机。
3)初步学会编写和调试分支结构程序。
五、教师知识和能力要求:
要求教师熟悉微机的结构和工作原理,熟悉8086CPU的寻址方式和指令系统,掌握汇编语言程序设计上机步骤。
掌握MASM和TASM汇编程序的安装方法。
六、学生知识和能力准备:
认真阅读8086CPU的寻址方式和指令系统。
编写分支结构汇编语言程序。
做好实验工具软件和资料准备。
七、工具与设备:
八、辅助教学资料:
汇编语言程序设计韩海编
九、实施步骤与技术要点:
题目:用跳转语句实现从键盘接收一个字符,如果是小写字母则输出“L”,大写字母则输出“U”,数字则输出“N”,都不是则输出“*”。
输入回车停止输入。
如下图所示:
1.画出程序流程图,编写源程序:
2.用汇编程序产生目标文件:
3.用LINK.EXE程序产生可执行文件:
4.运行可执行文件:
十、考核或评价标准:
1. 检查上机步骤及调试结果:(60分)
2.程序分析正确性:(20分),
3.结合思考题答辩情况(20分),综合评定成绩。
微机原理实验报告
微机原理实验报告实验目的,通过本次实验,掌握微机原理的基本知识,了解微机系统的组成和工作原理,掌握微机系统的组装和调试方法。
实验一,微机系统组成及工作原理。
1.1 微机系统的组成。
微机系统由中央处理器(CPU)、内存、输入设备、输出设备和外部设备等组成。
其中,CPU是微机系统的核心部件,负责控制整个系统的运行。
1.2 微机系统的工作原理。
微机系统的工作原理是通过CPU对内存中的指令进行解释和执行,从而实现各种功能。
CPU通过总线与内存、输入输出设备进行数据传输和控制信号的交换,实现对整个系统的控制和管理。
实验二,微机系统的组装和调试。
2.1 微机系统的组装。
在组装微机系统时,首先要选择合适的主板、CPU、内存、硬盘等配件,然后按照正确的安装顺序和方法进行组装。
组装完成后,还需连接电源、显示器、键盘、鼠标等外部设备。
2.2 微机系统的调试。
组装完成后,需要对微机系统进行调试,检查各个部件是否连接正确,是否能够正常工作。
通过BIOS设置和操作系统的安装,完成对微机系统的调试和配置。
实验三,微机系统的应用。
3.1 微机系统的应用领域。
微机系统广泛应用于各个领域,如办公、教育、科研、娱乐等。
在办公领域,微机系统可以用于文字处理、表格制作、图像处理等;在教育领域,微机系统可以用于多媒体教学、网络教学等。
3.2 微机系统的发展趋势。
随着科技的不断发展,微机系统也在不断更新换代,性能不断提升,体积不断缩小,功耗不断降低。
未来,微机系统将更加智能化、便携化,成为人们生活、工作不可或缺的一部分。
结论,通过本次实验,我对微机原理有了更深入的了解,掌握了微机系统的组成和工作原理,了解了微机系统的组装和调试方法,对微机系统的应用和发展趋势也有了一定的认识。
这对我今后的学习和工作将有很大的帮助。
微机接口机原理实验报告
微机原理及接口技术——实验报告学号: xxxxxx姓名: xxxxx专业: 网络工程实验一: 系统认知1.1实验目的掌握 TD 系列微机原理及接口技术教学实验系统的操作, 熟悉Wmd86 联机集成开发调试软件的操作环境。
通过顺序程序设计与分支程序设计来进行举例。
1.2实验设备PC 机一台, TD-PITE 实验装置一套。
1.3实验内容内存从BUFF开始的单元中存放着两个字数据X、Y, 完成X+Y, 并将相加的和(假设仍为一个字数据)存放于内存从RESULT开始的存储单元中。
DATA SEGMENTBUFF DW X,YRESULT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,BUFFADD AX,BUFF+2MOV RESULT,AXMOV AH,4CHINT 21HCODE ENDSEND START加载程序后调试, R寄存器;U反汇编;D显示数据;E修改数据。
1.4实验截图实验二分支程序设计2.1实验目的1.掌握分支程序的结构.2.掌握分支程序的设计、调试方法.2.2实验设备PC 机一台, TD-PITE 实验装臵一套。
2.3实验内容1, X>0求函数Y= 0, X=0-1, X<0程序如下:DATA SEGMENTVAR1 DB XVAR2 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AL, VAR1CMP AL, 0JGE BIGMOV VAR2,0FFHJMP DONEBIG:JE EQULMOV VAR2,1JMP DONEEQUL:MOV VAR2, 0DONE:MOV AH, 4CHINT 21HCODE ENDSEND START实验三循环程序设计3.1实验目的1)加深对循环结构的理解。
实验二 顺序分支程序设计
顺序分支程序设计
2、实验目的
利用二进制加法运算和符号函数实例, 利用二进制加法运算和符号函数实例,了 解顺序与分支结构程序,掌握顺序/ 解顺序与分支结构程序,掌握顺序/分支结构 程序的编程方法,掌握运算类指令、 程序的编程方法,掌握运算类指令、跳转指令 的使用, 的使用,了解运算类指令对各状态标志位的影 响及其测试方法, 响及其测试方法,进一步了解汇编程序上机调 试的方法,检查结果的正确性。 试的方法,检查结果的正确性。
附录
编写计
1)顺序/分支结构程序框图 顺序/
开始 开始 为X赋初值 为Y赋初值 X与Y相加 和送Z 结束 -1→Y X≥0? N
为X赋初值
Y A=0? Y 0→Y 结束 N
1→Y
顺序结构
分支结构
2)参考程序
DATA SEGMENT XL DW ? ;在此给 X 低位赋值 XH DW ? ;在此给 X 高位赋值 YL DW ? ;在此给 Y 低位赋值 YH DW ? ;在此给 Y 高位赋值 ZL DW ? ZH DW ? DATA ENDS CODE SEGMENT CS:CODE,DS: ASSUME CS:CODE,DS:DATA START: AX, START: MOV AX,DATA AX, MOV AX,XL AX, ADD AX,YL ZL, MOV ZL,AX AX, MOV AX,XH AX, ADC AX,YH ZH, MOV ZH,AX A1: A1: JMP A1 CODE ENDS END START 低位送AX ;X 低位送AX 低位加Y ;X 低位加Y 低位 ;存低位和 高位送AX ;X 高位送AX 高位加Y ;X 高位加Y 高位
数据分析并记录
3)根据上机操作进行记录(内容2)参考程序P110) 根据上机操作进行记录(内容2 参考程序P110) P110 对于内容1 对于内容1)设置几组数据进行记录 内容1 内容1) XH XL YH YL
微机原理实验指导书 (1)
实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。
2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。
系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。
4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。
程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。
注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。
输入程序后可通过反汇编查看程序。
(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。
可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。
(分别参考前)。
④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。
微机原理实验报告——分支程序设计
实验三 分支程序设计一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。
二、软硬件环境1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 5.0、DEBUG 、LINK 和EDIT 等应用程序。
三、实验涉及的主要知识单元在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。
下面就有符号数转移指令来了解在汇编语言程序设计方法。
四、实验内容与步骤1.实验内容(1)编写计算下面函数值的程序:⎪⎩⎪⎨⎧<-=>=0,10,00,1x x x y设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的数据(2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。
2.实验步骤 a.实验流程图(1)计算函数值的流程图b.编写程序(1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ?DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?)STACK ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XXCMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0<AL 则1-=Y JMP EXITBIGPR: JE EQUPR ;0=AL 转入EQUPR MOV Y,1 ;0>AL 则1=Y JMP EXITEQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDSEND START(2)查找最大值的实验代码 DATA SEGMENTARRAY DB 2,1,4,5,3 RESULT DB ? DATA ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA BX,ARRAYMOV AL,[BX] ;ARRAY 第一个数存入BX MOV CX,5 ;置循环次数 LOP: INC BX ;指针变量增1CMP AL,[BX] ;比较AL 中数与[BX]的大小JAE L1;][BX AL ≥转入L1MOV AL,[BX];][BX AL <则][BX AX ←L1: LOOP LOP ;执行循环LOP 程序MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDSEND STARTc.对程序进行debug 调试,观察中间结果 (1)计算函数值的调试 1.反汇编内容①MOV AL,XX 反汇编后变成MOV AL,[0000],即XX 为数据段第一个存储单元的内容,数据段的起始偏移地址为0000。
微机分支程序设计实验
微机分支程序设计实验微机分支程序设计是计算机科学与技术领域中的一个重要实验,它涉及到程序设计中的条件判断和选择结构。
通过这个实验,学生可以深入理解程序的逻辑控制流程,掌握分支结构的实现方法,并能够应用这些知识解决实际问题。
以下是微机分支程序设计实验的详细内容。
实验目的1. 理解程序设计中的分支结构及其重要性。
2. 掌握条件语句的语法和使用方式。
3. 学会使用分支结构解决实际问题。
4. 提高编程能力和逻辑思维能力。
实验环境- 计算机一台,安装有编程软件(如Visual Studio, Dev-C++等)。
- 编译器(如GCC, MSVC等)。
- 必要的开发工具和文档。
实验内容1. 基础分支结构实验的第一部分是理解并实现基本的分支结构,包括`if`语句和`switch`语句。
- if语句:实现一个简单的程序,根据输入的条件执行不同的代码块。
- switch语句:编写程序,根据输入的值选择不同的执行路径。
2. 复合条件在第二部分,学生将学习如何使用逻辑运算符来构建复合条件。
- 使用`&&`(逻辑与)、`||`(逻辑或)和`!`(逻辑非)来构建更复杂的条件判断。
3. 嵌套分支第三部分将探讨分支结构的嵌套使用,即在一个`if`语句内部使用另一个`if`语句。
- 编写程序,实现多条件的判断和选择。
4. 应用实例在第四部分,学生将应用分支结构解决一些实际问题,如计算成绩等级、判断闰年等。
- 成绩等级:根据输入的成绩,使用分支结构输出相应的等级。
- 闰年判断:编写程序判断用户输入的年份是否为闰年。
实验步骤1. 需求分析:明确实验任务和目标。
2. 设计算法:根据实验要求设计合适的算法流程。
3. 编写代码:根据设计好的算法,使用编程语言实现程序。
4. 编译调试:在编程环境中编译程序,并调试以确保程序正确运行。
5. 结果测试:使用不同的输入测试程序,确保程序能够正确处理各种情况。
6. 文档编写:编写实验报告,记录实验过程、结果和心得体会。
微机原理实验3分支程序设计
物理与机电工程系(2015——2016 学年第一学期)《分支程序设计》上机实验报告专业:电子信息工程学号: 4625852555姓名:不同人任课教师:规范和实验地点:实验楼368项目编号:实验三开始结束小于否?大与否?取Y=0偏移地址送DX取Y=-1偏移地址送DX取Y=1偏移地址送DX定义段和输出字符串存入自变量X初始化X 送AL与0比较返回DOS 功能调用调用9号功能键输出N开始定义段和输出字符串Y初始化调用1号功能键输入字符X送AL与61H比较大于等于否?与7AH比较小于等于否?AL减20H取Y的偏移地址送DL调用9号功能键调用2号功能键输出Y输出DL中的值返回DOS功能调用结束开始结束定义段和输出字符串调用1号功能键初始化X 送AL输出shuzi返回DOS 功能调用输入字符与30H 比较取shuzi 偏移地址调用9号功能键大于等于否?与39H 比较小于等于否?取qita 的偏移地址调用9号功能键输出qita大于等于否?小于等于否?取zimu 的偏移地址调用9号功能键输出zimu小于等于否?小于等于否?与7AH 比较与41H 比较与5AH 比较与61H 比较NYY NNYY NYNNY—欢迎下载12。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 分支程序设计
一、实验要求和目的
1.熟悉汇编语言程序设计结构;
2.熟悉汇编语言分支程序基本指令的使用方法;
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。
二、软硬件环境
1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 、DEBUG 、LINK 和EDIT 等应用程序。
三、实验涉及的主要知识单元
在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。
下面就有符号数转移指令来了解在汇编语言程序设计方法。
四、实验内容与步骤
1.实验内容
(1)编写计算下面函数值的程序:
⎪⎩
⎪
⎨⎧<-=>=0,10,00,1x x x y
设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的
数据
(2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。
2.实验步骤 a.实验流程图
(1)计算函数值的流程图
b.编写程序
(1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ?
DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?)
STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XX
CMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0<AL 则1-=Y JMP EXIT
BIGPR: JE EQUPR ;0=AL 转入EQUPR MOV Y,1 ;0>AL 则1=Y JMP EXIT
EQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDS
END START
(2)查找最大值的实验代码 DATA SEGMENT
ARRAY DB 2,1,4,5,3 RESULT DB ? DATA ENDS
STACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA BX,ARRAY
MOV AL,[BX] ;ARRAY 第一个数存入BX MOV CX,5 ;置循环次数 LOP: INC BX ;指针变量增1
CMP AL,[BX] ;比较AL 中数与[BX]的大小
JAE L1
;][BX AL ≥转入L1
MOV AL,[BX]
;][BX AL <则][BX AX ←
L1: LOOP LOP ;执行循环LOP 程序
MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS
END START
c.对程序进行debug 调试,观察中间结果 (1)计算函数值的调试 1.反汇编内容
①MOV AL,XX 反汇编后变成MOV AL,[0000],即XX 为数据段第一个存储单元的内
容,数据段的起始偏移地址为0000。
②MOV Y ,-1;MOV Y ,0;MOV Y ,1反汇编后分别对应MOV BYTE PTR [0001],FF, MOV BYTE PTR [0001],00,MOV BYTE PTR [0001],01 它们都表示比较后所得的结果存入
数据段的第二个存储单元0001
③JGE如果为真,则程序执行会转入有效地址为0014的指令所在的存储单元,即开始执行1407:0014里的指令,JZ若为真,则程序转去执行有效地址为001E里的命令,即存储单元1407:001E的内容
命令查看Y存储单元的内容,当输入为12时输出为1
当输入为0时,输出为0
(2)查找最大值
1.反汇编
2.查找的最大值为5
即RESULT中存放五个数中的最大值5。