📄 exam603.asm
字号:
;从X单元开始的30个连续单元中存放有30个无
;符号数,从中找出最大者送入Y单元中。
data segment
x db 11,22,13,24,56,76,78,55,64,44
db 56,64,63,45,43,62,47,89,99,69
db 77,88,41,33,21,54,53,83,38,81
y db ?
data ends
code segment
assume cs:code, ds:data
start: push ds
mov ax, 0
push ax
mov ax, data
mov ds, ax
mov al, x
mov bx, offset x
mov cx, 29 ;置比较次数
l1: inc bx
cmp al, [bx]
jae l2
xchg al, [bx]
l2: loop l1
mov y, al
mov ax, word ptr y
call outax
mov ah, 4ch
int 21h
ret
;显示子程序,入口参数为ax
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
;简化格式
;.model small
;.stack 200h
;.data
; x db 11,22,13,24,56,76,78,55,64,44
; db 56,64,63,45,43,32,47,89,99,69
; db 77,88,41,32,21,54,53,83,38,81
; y db ?
;.code
; start: mov ax, @data
; mov ds, ax
; mov al, x
; mov bx, offset x
; mov cx, 29
;li: inc bx
; cmp al, [bx]
; jne l2
; mov al, [bx]
;l2: dec cx
; jnz l1
; mov y, al
; ret
;end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -