汇编语言实验——01
实验一 利用DEBUG熟悉常用指令的使用
一、实验目的
熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。
二、实验题
1、用debug命令查看并修改10000H处的内容,把结果截图在下面。
2、通过debug命令对寄存器和存储单元进行设置,使(DS)=2000H, (BX)=0100H, (SI)=0002H, (BP)=0200H, (SS)=2300H, (DX)=0300H (20100)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (21200)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H, (20520)=22H, (20521)=33H, (23204)=88H。
- 分别输入下列指令,并单步T执行,观察执行结果并截图。说明各指令的源操作数是什么寻址方式,并说明执行完后AX寄存器的内容。
(1) MOV AX,1200H
(2) MOV AX, BX
(3) MOV AX, [1200H]
(4) MOV AX, [BX]
(5) MOV AX,1100[BX]
(6) MOV AX, [BX][SI]
(7) MOV AX,1100[BX][SI]
(8) MOV AX, [BP+SI+04]
(1)立即寻址方式,直接将1200H送到AX中,可以看到AX的值变为1200H
(2)寄存器寻址方式,将寄存器BX中的值0100H送到寄存器AX中,BX中的值为0100H,AX的值变为0100H
(3)直接寻址方式,将地址为1200H中的值送到AX中,把内存单元地址为:DS*16+1200字地址对应的16位数送给AX,联系第题目的设置, 也就是把字地址位21200H的数,即4C2A送给AX,所以理论分析:AX应该是4C2AH
(4)寄存器间接寻址,把内存单元地址为:DS*16+BX中的数的字地址对应的16位数送给AX,联系题目的设置,也就是把字地址位20100H的数,即3421送给AX,所以理论分析:AX应该是3412H
(5)寄存器相对寻址,把内存单元地址为:DS *16+1100+BX中的数的字地址对应的16位数送给AX,联系第题目的设置,也就是把字地址位21200H的数,即4C2A送给AX,所以理论分析:AX应该是4C2AH
(6)寄存器变址寻址,把内存单元地址为:DS * 16+BX+SI中的数的字地址对应的16位数送给AX,联系第题目的设置,也就是把字地址位20102H的数,即7856送给AX,所以理论分析:AX应该是7856H
(7)相对基址变址寻址方式,把内存单元地址为:DS * 16+1100+BX+SI中的数的字地址对应的16位数送给AX,联系第题目的设置,也就是把字地址位21202H的数,即65B7送给AX,所以理论分析:AX应该是65B7H
(8)比例变址寻址方式,把内存单元地址为:DS * 16+BX+SI+04中的数的字地址对应的16位数送给AX,联系第题目的设置,也就是把字地址位20206H的数,即0000送给AX,所以理论分析:AX应该是0000H
4. 请先给BX、DX寄存器及相应存储单元赋值,再分别用一条汇编语言指令完成如下功能,查看结果并截图:
(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。
(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
(3)用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。
(4)把数0B5H与(AL)相加,并把结果送回AL中。
三、实验报告
总结操作步骤及各种寻址方式,截图记录调试结果。
本文来自博客园,作者:TCcjx,转载请注明原文链接:https://www.cnblogs.com/tccjx/p/16122774.html