一、实验目的
熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。
二、实验题
- 通过debug命令对寄存器和存储单元进行设置,使(DS)=2000H, (AX)=0020H, (BX)=0100H, (DX)=0300H, (SI)=0002H, (20520)=22H, (20521)=33H, (20102)=55H, (20103)=66H
请分别用一条汇编语言指令完成如下功能:
根据题目要求设置的数据如上图
(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。
ADD DX,BX
BX寄存器里面是0100,加上DX中的0300,即0100+0300=0400,带回到DX中
最后DX中应显示0400
(2) 用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
ADD AL,[BX+SI]
寄存器BX和SI的基址变址寻址20000+0100+0002=20102,20102地址中的数据为75, 再加上AX中的低八位,即 20+75=95,带回到AX的低八位中,最后显示AX为0095
(3) 用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。
ADD WORD PTR[0520H],3412H
根据最开始题目设置,[0520H]里面原来是3322H,与3412H相加,即3322+3412=6734, 带回到[0520H]中,最后[0520H]应显示6734
(4) 把数0B5H与(AL)相加,并把结果送回AL中。
ADD AL,0B5H
AX中的低八位为95,加上0B5H,即95H+B5H=4A,带回到AX的低八位中,最后AX 应显示004A
- 求出以下各十六进制数与十六进制数62A0之和,并根据结果设置标志位SF、ZF、CF、(OF)的值。单步执行、观察运行结果并与自己的判断进行比较。
(1)1234 (2)4321 (3)CFA0 (4)9D60
提示:加法指令 ADD DST,SRC
<1>
62A0+1234=74D4 SF=0 ZF=1 CF=0 OF=0
立即数不能直接相加,可以先把AX设置为62A0,然后用ADD AX,1234命令,将AX中的数据拿出来与1234H相加之后放回到AX中去,然后查看AX中的数即可实现1234H和62A0H的相加,结果为74D4 ,标志位根据查找结果即可得出。
<2>
62A0+4321=A5C1 SF=1 ZF=1 CF=0 OF=1
立即数不能直接相加,可以先把AX设置为62A0,然后用ADD AX,4321命令,将AX中的数据拿出来与4321H相加之后放回到AX中去,然后查看AX中的数即可实现4321H和62A0H的相加,结果为A5C1,标志位根据查找结果即可得出。
<3>
62A0+CFA0=3240 SF=0 ZF=1 CF=1 OF=0
立即数不能直接相加,可以先把AX设置为62A0,然后用ADD AX,CFA0命令,将AX中的数据拿出来与CFA0H相加之后放回到AX中去,然后查看AX中的数即可实现CFA0H和62A0H的相加,结果为3240,标志位根据查找结果即可得出。
<4>
62A0+9D60=0000 SF=0 ZF=0 CF=1 OF=0
立即数不能直接相加,可以先把AX设置为62A0,然后用ADD AX,9D60命令,将AX中的数据拿出来与9D60H相加之后放回到AX中去,然后查看AX中的数即可实现9D60H和62A0H的相加,结果为0000,标志位根据查找结果即可得出。
- 求出以下各十六进制数与十六进制数4AE0的差值,并根据结果设置标志位SF、ZF、CF、OF的值。单步执行、观察运行结果并与自己的判断进行比较。
(1)1234 (2)5D90 (3)9090 (4)EA04
提示 减法指令 SUB DST,SRC
<1>
1234-4AE0=C754 SF=1 ZF=1 CF=1 OF=0
立即数不能直接相减,可以先把AX设置为1234,然后用SUB AX,4AE0命令,将AX中的数据拿出来与4AE0H相减之后放回到AX中去,然后查看AX中的数即可实现1234H和4AE0H的相减,结果为C754,标志位根据查找结果即可得出。
<2>
5D90-4AE0=12B0 SF=0 ZF=1 CF=0 OF=0
立即数不能直接相减,可以先把AX设置为5D90,然后用SUB AX,4AE0命令,将AX中的数据拿出来与4AE0H相减之后放回到AX中去,然后查看AX中的数即可实现5D90H和4AE0H的相减,结果为12B0,标志位根据查找结果即可得出。
<3>
9090-4AE0=45B0 SF=0 ZF=1 CF=0 OF=1
立即数不能直接相减,可以先把AX设置为9090,然后用SUB AX,4AE0命令,将AX中的数据拿出来与4AE0相减之后放回到AX中去,然后查看AX中的数即可实现9090H和4AE0H的相减,结果为45B0,标志位根据查找结果即可得出。
<4>
EA04-4AE0=9F24 SF=1 ZF=1 CF=0 OF=0
立即数不能直接相减,可以先把AX设置为EA04,然后用SUB AX,4AE0命令,将AX中的数据拿出来与4AE0相减之后放回到AX中去,然后查看AX中的数即可实现EA04H和4AE0H的相减,结果为9F24,标志位根据查找结果即可得出。
今天的文章汇编语言及应用——熟悉常用指令的使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/66242.html