输入一个3位十进制数,与自己学号的后三位组成的十进制数进行比较,并输出较大的三位十进制数。
;学号后三位为015
data segment
msg db 'input num:',0dh,0ah,'$'
mynum dw 015
num dw ?
bignum dw ?
new db 0dh,0ah,'$'
new1 db 'the bigger one is:',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset msg ;输入提示
mov ah,9
int 21h
mov ah,1 ;处理输入的百位
int 21h
cbw
sub ax,30h ;输入百位,要乘以100
mov bx,100
mul bx
mov num,ax
mov ah,1 ;处理输入的十进制数,每输入一个字符就及时处理
int 21h
cbw
sub ax,30h ;输入十位,要乘以10
mov bx,10
mul bx
add num,ax
mov ah,1
int 21h
cbw
sub ax,30h ;输入的是个位
add num,ax
mov dx,offset new ;回车换行
mov ah,9
int 21h
mov dx,offset new1 ;最大数输出提示
mov ah,9
int 21h
mov dx,offset new ;回车换行
mov ah,9
int 21h
mov ax,mynum
cmp ax,num
ja input
mov ax,num ;将最大数存在ax中,然后input输出
jmp input
;较大的三位数字,输出
input:
mov bx,100
div bx ;输出百位
mov bx,dx ;保存好余数
mov dl,al
add dl,30h
mov ah,2
int 21h
mov ax,bx ;除以100后的余数在bx中
mov bl,10
div bl
mov bl,ah ;除10的余数,也就是个位数字
mov dl,al
add dl,30h
mov ah,2
int 21h ;输出十位
mov dl,bl ;输出个位数
add dl,30h
mov ah,2
int 21h
mov ah,4ch
int 21h
code ends
end start
最大测试数999,判断成功。