📄 adcdemo.asm
字号:
STACK segment STACK
db 100h dup (0)
STACK ends
data_seg segment
A1 dw 0a000h ;a000h前面加一个'0'的意思,是防止报错,
;MASM会将a000h当成一个变量,而0a000h则是一个数字。
B1 dw 7000h
A2 dw 00a7h
B2 dw 006ah
data_seg ends
code_seg segment
assume cs:code_seg, ds:data_seg, ss:STACK
start: mov ax, STACK
mov ss, ax ;堆栈段寄存器初始化
mov ax, data_seg
mov ds, ax ;数据段寄存器初始化
;两个32位数字相加
; 00a7 a000h
; + 006a 7000h
; ----------------
; | |
; v v
; DX AX
; = 0112 1000h
mov ax, A1 ;取低16位数字
add ax, B1 ;与另一个低16位数字相加,注:是不带进位的相加
mov dx, A2 ;取高16位数字
adc dx, B2 ;与另一个高16位数字相加,注:是带进位的相加
;这里,经过运算后,DX中存放的32位运算结果的高16位
; AX中存放的32位运算结果的低16位
mov ax, 4c00h
int 21h ;DOS中断调用的功能号为ah = 4ch, DOS程序正常退出
code_seg ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -