题目要求是这样的
在屏幕中的第 10 行到 15 行的第 20 列开始显示如下菜单: Arithmetic system of primary school
然后我写出了下面的代码
assume cs:codesg, ds:datasg
datasg segment
welcome db 'Arithmetic system of primary school$'
file db '1. add$'
insert db '2. subtract$'
modify db '3. multiply$'
exit db '4. devide$'
datasg ends
codesg segment
start:
mov ax, datasg
mov ds, ax
mov ah, 02h
mov dh, 09h
mov dl, 13h
int 10h
lea dx, welcome
mov ah, 09h
int 21h
mov ah, 02h
mov dh, 10h
mov dl, 13h
int 10h
lea dx, file
mov ah, 09h
int 21h
mov ah, 02h
mov dh, 11h
mov dl, 13h
int 10h
lea dx, insert
mov ah, 09h
int 21h
mov ah, 02h
mov dh, 12h
mov dl, 13h
int 10h
lea dx, modify
mov ah, 09h
int 21h
mov ah, 02h
mov dh, 13h
mov dl, 13h
int 10h
lea dx, exit
mov ah, 09h
int 21h
;等待用户按键
mov ah, 07h
int 21h
mov ah, 4ch
int 21h
codesg ends
end start
这个代码可以正确显示出我要的内容,但是第一行和第二行之间总是有空行,具体表现如下
我真的想不明白问题出在哪里 不论是问百度还是问 gpt 都不太管用,我没法了所以来问问各位,希望有懂的救一下,我先谢谢各位了
1
sdjl 344 天前
你的代码基本上是正确的,但是问题出在你每次写入字符串之后并没有更新光标位置。你需要在每次写入字符串之后,都把光标往下移一行。
在汇编语言中,int 21h 服务 9 只是简单地输出字符串,不会自动修改光标位置。你需要自己手动调整光标位置。 你可以尝试在每次调用 int 21h 后,增加以下代码来移动光标到下一行。 mov ah, 02h inc dh mov dl, 13h int 10h 这个代码应该能解决你的问题。希望能帮到你! |
2
chuckzhou 344 天前 1
09h 是 16 进制的 9 ,下一行是 0ah ,不是 10h
|