汇编求两个数的和(一)

入门篇

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对应的字符,请看下图

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

原文地址:https://www.cnblogs.com/viplanyue/p/12700591.html