38 lines
1.3 KiB
NASM
Executable File
38 lines
1.3 KiB
NASM
Executable File
DSEG SEGMENT
|
||
XXX DW 1234H
|
||
YYY DW 5678H
|
||
ZZZ DD ?
|
||
DSEG ENDS
|
||
|
||
CSEG SEGMENT
|
||
ASSUME CS:CSEG, DS:DSEG
|
||
START:
|
||
MOV AX, DSEG
|
||
MOV DS, AX
|
||
|
||
MOV AX, XXX ; 将XXX赋给AX
|
||
XOR DX, DX ; 异或DX和DX,即将DX置0
|
||
|
||
ADD AX, AX ; AX *= 2, AX = 2 * XXX
|
||
ADC DX, 0 ; 把进位保存在DX中
|
||
|
||
ADD AX, AX ; AX *= 2, AX = 4 * XXX
|
||
ADC DX, 0 ; 更新DX中的进位信息
|
||
|
||
ADD AX, AX ; AX *= 2, AX = 8 * XXX
|
||
ADC DX, 0 ; 更新DX中的进位信息
|
||
|
||
ADD AX, AX ; AX *= 2, AX = 16 * XXX
|
||
ADC DX, 0 ; 更新DX中的进位信息
|
||
|
||
ADD AX, YYY ; AX += YYY, AX = 16 * XXX + YYY
|
||
ADC DX, 0 ; 更新DX中的进位信息
|
||
|
||
MOV WORD PTR ZZZ, AX ; ZZZ的低位 = AX = 16 * XXX + YYY
|
||
MOV WORD PTR ZZZ+2, DX ; ZZZ的高位 = DX = 进位数, ZZZ = 16 * XXX + YYY(完整)
|
||
|
||
MOV AH, 4CH
|
||
INT 21H
|
||
CSEG ENDS
|
||
END START
|