
为什么如下汇编程序调用mov ah,9 无法在屏幕上系那是字符?
程序功能是从键盘输入字符串,然后显示datasegmentlimitdb10numbdb?msgdb10dup(0)dataendscodesegmentassumecs...
程序功能是从键盘输入字符串,然后显示
data segment
limit db 10
numb db ?
msg db 10 dup(0)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset limit
mov ah,0ah
int 21h
mov bl,numb
mov bh,0
mov byte ptr msg[bx],'$'
lea dx,msg
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
求解答 展开
data segment
limit db 10
numb db ?
msg db 10 dup(0)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset limit
mov ah,0ah
int 21h
mov bl,numb
mov bh,0
mov byte ptr msg[bx],'$'
lea dx,msg
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
求解答 展开
展开全部
10 号调用输入字符串之后,直接就用 9 号再显示字符串。
两者的字符串位置,重合了。因此,就认为没有显示。
在两者之间,加入回车换行,即可使两者分离,程序修改如下:
MOV DX, OFFSET LIMIT
MOV AH, 0AH
INT 21H
MOV BL, NUMB
MOV BH, 0
MOV BYTE PTR MSG[BX], '$'
MOV DL, 13
MOV AH, 2
INT 21H
MOV DL, 10
MOV AH, 2
INT 21H
LEA DX, MSG
MOV AH, 9
INT 21H
两者的字符串位置,重合了。因此,就认为没有显示。
在两者之间,加入回车换行,即可使两者分离,程序修改如下:
MOV DX, OFFSET LIMIT
MOV AH, 0AH
INT 21H
MOV BL, NUMB
MOV BH, 0
MOV BYTE PTR MSG[BX], '$'
MOV DL, 13
MOV AH, 2
INT 21H
MOV DL, 10
MOV AH, 2
INT 21H
LEA DX, MSG
MOV AH, 9
INT 21H
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询