汇编求两个数的和(一)

入门篇

1.代码:

DATA SEGMENT
        D1 DB 12H
        D2 DB 23H
        RESAULT DB 2 DUP(0),'$'
DATA ENDS

CODE SEGMENT
        ASSUME CS:CODE,DS:DATA
START:
        MOV AX,DATA
        MOV DS,AX
        MOV AX,0
        MOV AL,D1
        ADD AL,D2
        MOV RESAULT,AL
        LEA BX,RESAULT
        MOV DX,BX
        MOV AH,9
        INT 21H
        MOV AH,4CH
        INT 21H
CODE ENDS
        END START

需要说明的是,该结果并非 12H+23H 的十六进制值,而是(12H+23H)对应的ASCALL值(改进算法在以后的几篇中提到)

2.分析

这是初始化段的操作,可以看出,DS段的偏移地址为076A

然后把12H和23H的相加结果保存到RESAULT变量中,可以看出RESAULT的物理地址为DS:0002

紧接着,我们把RESAULT的偏移地址赋值给DX中,这样,我们就可以用DOS系统的9号功能显示出它的结果来了,但是,需要注意的是它显示出来的是ASCLL值为35H对应的字符,请看下图

本文章这个方法并非是真正算两数相加的算法,而是让读者明白上诉问题的原因是什么,具体算法再后续篇章中会一一提出。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT蓝月

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值