入门篇
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对应的字符,请看下图
本文章这个方法并非是真正算两数相加的算法,而是让读者明白上诉问题的原因是什么,具体算法再后续篇章中会一一提出。