微机原理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:学号:
班级:实验日期:年月日批阅老师:
实验名称:拆字、拼字程序
一、实验预习内容
1、8086/8088有14个16位寄存器,按其用途可分为8个寄存器、2个寄存器和4个寄存器。
2、通用寄存器分别是。代码段寄存器是,数据段寄存器是,堆栈段寄存器是。
3、在数据寄存器中,被称为累加器的用于算术运算外,还用于输入/输出等操作。被称为基址寄存器的它可作为存储器指针来使用。被称为计数寄存器的在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用来指明移位的位数。而数据寄存器在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
4、堆栈指针寄存器与SS配合使用,可指向目前的堆栈位置;基址指针寄存器可用作SS的一个相对基址位置;源变址寄存器可用来存放相对于DS段之源变址指针;目的变址寄存器可用来存放相对于 ES 段之目的变址指针。指令指针寄存器用来存放代码段中的偏移地址。
5、在8088指令的寻址方式中,下列各指令中属于立即寻址的是,属于寄存器寻址的是,属于直接寻址的是,属于寄存器间接寻址的是,属于基址寻址的是,属于基址加变址寻址的是。
A、MOV AX,2000H
B、MOV AX,[2000H]
C、MOV AX,CX
D、MOV AX,[DI]
E、MOV AX,[BX][SI]
F、MOV AX,[BP]
6、在DEBUG下,反汇编命令是,汇编命令是,显示显示内存单元内容的命令是,修改内存单元内容的命令,检查和修改寄存器内容的命令是,逐步追踪执行命令是,连续执行程序命令是,退出命令是。
二、实验内容与过程
1、设DS为当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令在存储器偏移地址300H~304H单元中连续按顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么,并指出这条指令是什么寻址方式。
程序清单如下:
MOV AX,0000H
MOV BX,0300H
MOV SI,0002H
MOV DI,0302H
MOV AX,BX AX的内容: ;
MOV AX,0302H AX的内容: ;
MOV AX,[DI] AX的内容: ;
MOV AX,[BX] AX的内容: ;
MOV AX,0001[BX] AX的内容: ;
MOV AX,[BX][SI] AX的内容: ;
MOV AX,0002[DI] AX的内容: ;
HLT
(1)在汇编软件环境下,首先输入程序,并在建立的文件夹下进行保存;然后进行编译生成,发现问题进行编辑修改再进行编译;再进行链接生成。
(2)用 E 命令加带数据段物理地址,将偏移地址300H~304H单元中连续按顺序装入。
(4)用命令单步跟踪执行程序,查看寄存器的内容,根据每条指令执行情况,记录其所存放的数据。
2、把4000H单元的内容拆开,高位送4001H单元,低位送4002H单元。
拆字程序清单如下,按要求在填空处完善注释。
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV BX,4000H ;把地址单元4000H给BX寄存器
MOV [BX],5BH ;
MOV AL,[BX] ;把4000H单元的内容给AL
MOV AH,AL ;再把4000H单元的内容给AH
MOV CL,04 ;
SHR AH,CL ;
ADD BX,01 (或INC BX) ;地址单元加1
MOV [BX],AH ;
AND AL,0FH ;屏蔽掉AL中的高四位
ADD BX,01 (或INC BX) ;地址单元加1
MOV [BX],AL ;
HLT
CODES ENDS ;程序结束
END START
查看4000H起始的三个单元内容的命令为,从4000H起三个地址单元的保存的数据依次为:。
3、把2000H、2001H的单元的低4位拼成一个字,送入2002H单元(第一个字的低4位和第二个字的低4位拼成一个字)。完善程序,并用DEBUG进行调试。CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START: MOV AX,DATAS
MOV DS,AX
MOV BX,2000H ;把地址单元2000H给BX寄存器
;把2000H单元所要拼的字置为F6H
;把2001H单元所要拼的字置为28H MOV AL,[BX] ;把2000H单元的内容给AL
MOV AH,[BX+1] ;把2001H单元的内容给AH
;屏蔽掉AL中的高四位
MOV CL,04H ;设置移位次数为4
;AH的内容左移4位
;进行拼字
ADD BX,02H ;地址单元到2002H
;将拼好的字保存在2002H单元
HLT
CODES ENDS ;程序结束
END START
使用命令查看存放在2000H单元起三个地址单元中的数据分别是:
。
三、实验总结
1、汇编程序的调试过程有关问题:
①输入源程序代码并进行存盘;②对文件进行,若发现错误可根据错误信息进行修改,直到无错为止;③在DEBUG下,用相关命令进行查看、修改或执行汇编程序,常用的相关命令分别是;④在DEBUG 下,程序运行的结果一般存放在相关中,或者存放在数据段偏移地址单元中。⑤在显示结果中所看到的分别表示溢出、方向、中断、符号、零、辅助进位、奇偶、进位标志状态是复位状态。
2、其它相关问题:
①汇编程序保存的文件名(及文件夹)必须符合命名要求,一般由26个英文字母和10个数字组成,文件名长度不准超过个字符。
②输入程序代码指令其英文符号的或者输入都一样,而指令间该有的不能省略,其指令和标点符号必须是在状态下输入方可有效。
③程序代码和程序数据一般存放在不同的下,若存在同一段地址下,其偏移地址可不同,且偏移地址间要有一定的相隔空间。偏移地址从开始,到最大结束。
3、所有移位指令的目标操作数,只允许是,指令中的计数值可以是常数1,即移位1次,如果移位多于1次,则必须将移位数N事先装入寄存器中,本指令最多可移位255位。一般来说,当目标操作数为无符号数时采用指令;若目标操作数为有符号数时,则采用指令。
4、在逻辑运算指令中,仅指令不影响标志位;其它指令
执行后,除AF状态不定外,总是使OF=CF=0,ZF、SF、PF则根据运算结果被置位或复位。