📄 exam302.asm
字号:
;
data segment
x dw 20
y dw 30
z dw 40
v dw 200
data ends
code segment
assume cs:code, ds:data
start: mov ax, data
mov ds, ax
mov ax, x
imul y ;x*y—>(dx,ax)
mov cx, ax
mov bx, dx
mov ax, z
cwd ;z—>(dx,ax)
add cx, ax
adc bx, dx ;x*y+z—>(bx,cx)
sub cx, 540
sbb bx, 0 ;x*y+z-540
mov ax, v
cwd ;v—>(dx,ax)
sub ax, cx
sbb dx, bx ;v-(x*y+z-540)
idiv x ;
push dx
call outax
mov al, 02h
mov dl, '.'
int 21h
mov dl, '.'
int 21h
mov dl, '.'
int 21h
pop dx
mov ax, dx
call outax
mov ax, 4c00h
int 21h
outax proc far ;显示AX的内容
push bx ;保护现场
push cx
push dx
mov bx, ax
mov ch, 04 ;数据位计数器
rot: mov cl, 4 ;数据位数有4bit
rol bx, cl ;将最高4bit移
mov al, bl ;到bl最低4bit
and al, 0fh ;并取出送到al
add al, 30h ;转换为ASCII码
cmp al, 3ah ;al>'9'?
jb print ;是'0' ~ '9'转
add al,07 ;是'A' ~ 'F'再加7
print: mov ah, 02
mov dl, al
int 21h ;显示al字符
dec ch ;四位已经显示完没?
jnz rot ;还没有,转ROT
pop dx ;恢复现场
pop cx
pop bx
ret ;返回
outax endp ;子程序结束
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -