为什么这个程序一运行其他程序也不能在显示器上输出了呢?(有关 mov ah,2h int 21h的问题),在线等待

duststar 2002-05-28 12:37:59
我首先运行了一个没有问题的在CRT上输出的程序1,一切正常;然后我运行了以下的程序2,没有输出成功;我再运行前面的程序1,就不能输出了。请问这是什么问题?我重起以后,程序1就可以输出了。



这个程序段是为了能够在显示器上面以十进制输出AX里面的数的程序段

MOV BX,0 ;BX为标志,现实最高位是否已经输出过
CWD
MOV CX,10000
DIV CX
CMP AL,0
JE SL1
MOV BX,1

MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
SL1: MOV AX,DX
CWD
MOV CX,1000
DIV CX
CMP BX ,0
JNE OK1
CMP AL,0
JE SL2
OK1: MOV BX,1
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
SL2: MOV AX,DX
CWD
MOV CX,100
DIV CX
CMP BX,0
JNE OK2
CMP AL,0
JE SL3
OK2: MOV BX,1
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
SL3: MOV AX,DX
CWD
MOV CX,10
DIV CX
CMP BX,0
JNE OK3
CMP AL,0
JE SL4
OK3: MOV BX,1
MOV DL,AL
ADD DL,30H
mov dl,'a'
MOV AH,2
INT 21H

SL4: ADD DL,30H
mov dl,'a'
MOV AH,2
INT 21H
ret
请问是不是在dos里面改了什么,使得CRT都不能输出了吗?
...全文
352 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
neptune_hay 2002-05-29
  • 打赏
  • 举报
回复
程序输出的是不是'a'?
woshiwo 2002-05-29
  • 打赏
  • 举报
回复
这个程序段是为了能够在显示器上面以十进制输出AX里面的数的程序段

MOV BX,0 ;BX为标志,现实最高位是否已经输出过
CWD
MOV CX,10000
DIV CX
CMP AL,0
JE SL1
MOV BX,1

MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
SL1: MOV AX,DX
CWD
MOV CX,1000
DIV CX
CMP BX ,0
JNE OK1
CMP AL,0
JE SL2
OK1: MOV BX,1
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
SL2: MOV AX,DX
CWD
MOV CX,100
DIV CX
CMP BX,0
JNE OK2
CMP AL,0
JE SL3
OK2: MOV BX,1
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
SL3: MOV AX,DX
CWD
MOV CX,10
DIV CX
CMP BX,0
JNE OK3
CMP AL,0
JE SL4
OK3: MOV BX,1
MOV DL,AL
ADD DL,30H
mov dl,'a' ;这一句是你调试程序用的语句吧。没去掉:)
MOV AH,2
INT 21H

SL4: ADD DL,30H
mov dl,'a' ;这一句是你调试程序用的语句吧。没去掉:)
MOV AH,2
INT 21H
ret
首先你要明确在这段程序里,AX里面的值是怎样看待的。也就是说你把它当成有符号数还是无符号数。如果是有符号数,你要判断其最高位是否为1,然后根据判断决定是否输入-号,取补码等操作。如果是无符号数,即总是正数,那么CDW指令是错误的,改为xor dx,dx应该就没事了。因为如果AX最高位是1(大于等于8000H时),CWD会使DX置为FFFF,导致DIV CX时除法溢出。
粗略看了一下,你先试试看。先下了。
Dtang 2002-05-29
  • 打赏
  • 举报
回复
dl 不断的变化,dx用来记录余数的意义没有了,另有可能是al 中是不可输出的值,一直在键盘的缓冲区中不能被int 21h输出,而下一次用int 21h时还是不能
输出,这样认为不知是不是对的,请指教
duststar 2002-05-28
  • 打赏
  • 举报
回复
帮帮忙

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧