马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 server_test 于 2017-11-26 10:14 编辑 data segment
intip db "please intput number:$",0ah,0dh
indata db 12,0,12 dup(0)
data1 db "0dog "
db "1am "
db "2a "
db "3love "
db "4I "
db "5is "
db "6pig "
db "7my "
db "8and "
db "9gaan "
data ends
code segment
assume cs:code,ds:data
start:mov ax,data ;寄存器初始化
mov ds,ax
lea dx,intip ;输入提示
mov ah,9
int 21h
lea dx,indata ;把indata的偏移地址放入dx
mov ah,0ah
int 21h
lea di,indata+1 ;di指向indata的首地址
lea si,data1 ;si指向data1的首地址
mov al,[di]
cbw
mov cx,ax
inc di
comc:push cx
mov cx,10
comr:mov dl,[di]
mov al,[si]
cmp dl,al ;number匹配,ZF=0
jz next2
add si,10
loop comr
next1:inc di
lea si,data1
pop cx
loop comc
jmp finish
next2:mov cx,10
mov bx,1 ;bx置位
char:mov dl,[si+bx] ;输出显示字符串
mov ah,2
int 21h
inc bx
mov al,dl
cmp al,20h ;ZF置1,识别空格
loopnz char
jmp next1
finish:mov ah,4ch
int 21h
code ends
end start
将第2行改为:
intip db "please intput number:",0ah,0dh,"$"
不会被覆盖。
应该是int 21h的“0ah”功能最后输入回车符的时候,光标位置回到行首。
因此,再次显示的时候从行首开始显示,因此覆盖了原来显示的内容。
|