汇编语言及应用——熟悉常用指令的使用

一、实验目的

熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。

二、实验题

  1. 通过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
    在这里插入图片描述
  2. 求出以下各十六进制数与十六进制数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,标志位根据查找结果即可得出。
    在这里插入图片描述
  3. 求出以下各十六进制数与十六进制数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,标志位根据查找结果即可得出。
    在这里插入图片描述
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值