;-- 数据段定义 ----------------------------------
DATA SEGMENT
NUM1 DQ 00120030FC218B4AH ; 数1
NUM2 DQ 3E8144E96D701155H ; 数2
SUM DQ ? ; 结果单元
DATA ENDS
;-- 代码段定义 ----------------------------------
CODE SEGMENT ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA MOV DS, AX
;-- 循环初始化 ----------------------------------
LEA BX, NUM1 ; BX指向数1的最低一个字
LEA SI, NUM2 ; SI指向数2的最低一个字
LEA DI, SUM ; DI指向结果单元的最低一个字
MOV CX, 4 ; 循环次数(4个字相加)
CLC ; 清进位位
AGAIN: MOV AX, WORD PTR [BX] ; 字相加
ADC AX, WORD PTR [SI]
MOV WORD PTR [DI], AX ; 存和
INC BX ; 指针调整
INC BX
INC SI
INC SI
INC DI
INC DI
LOOP AGAIN ; 循环控制
;--------------------------------------------------
MOV AH, 4CH ; 返回DOS
INT 21H
CODE ENDS
END START
上面的程序中,为啥要求TOP EQU $-ST1?
后面的
MOV SS, AX
MOV SP, TOP是啥意思?
;-- 堆栈段定义忘记贴了 ----------------------------------
ST1 SEGMENT PARA STACK ‘STACK’
DB 100 DUP(?)
TOP EQU $-ST1
ST1 ENDS
;-- 堆栈段定义忘记贴了 ----------------------------------
ST1 SEGMENT PARA STACK ‘STACK’
DB 100 DUP(?)
TOP EQU $-ST1
ST1 ENDS