我的第一次汇编作业!

题目:
基于8088、8086指令系统完成以下编程:
1、只使用16位的寄存器,实现32位十六进制数的加法运算
2、加数NUM1和被加数NUM2请预先在数据段定义并初始化
3、加法结果请保存至数据段预先定义的变量RESULT
4、请将程序书写完整
5、尽量上机调试通过
;本程序将利用16bit数相加的方式计算两个32bit数NUM1和NUM2的和,并将结果存入变量RESULT
;AUTHOR DragonShard
;DATE 2005年3月31日
       DATAS  SEGMENT
        NUM2  DD        010101212H
        NUM1  DD        0FAFAFBFBH
      RESULT  DD        ?
         GJW  DW        ?           ;这里存储的是高16位进位
       DATAS  ENDS
       CODES  SEGMENT
              ASSUME    CS:CODES,DS:DATAS
      START:
  ;initialize the programme
              MOV       AX,DATAS
              MOV       DS,AX
              LEA       SI, NUM1
              MOV       AX, [SI]    ;将变量NUM1的低16位存入AX
              MOV       CX, [SI+2]  ;将变量NUM1的高16位存入CX
              LEA       SI, NUM2
              MOV       BX, [SI]    ;将变量NUM2的低16位存入BX
              MOV       DX, [SI+2]  ;将变量NUM2的高16位存入DX
              ADD       AX, BX      ;将NUM1和NUM2的低16位相加,结果存入AX
              ADC       CX, DX      ;将NUM1和NUM2的高16位相加并加上低16位的进位,结果存入CX
              LEA       DI, RESULT
              MOV       [DI],AX
              MOV       AX, 0000H   ;将AX和BX变为0,以便存储高16位的进位
              MOV       BX, 0000H
              ADC       AX, BX      ;将高16位进位存入AX
              MOV       [DI+2], CX
              MOV       [DI+4], AX
       CODES  ENDS
              END       START
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值