为什么这段代码会记录一行太长的错误?

时间:2019-05-24 07:13:34

标签: masm masm32 armasm masm64

我已键入此代码,以使用arm模拟上下计数器。 它会记录行太长的错误。

我只知道错误在90和91行上,但我不知道如何解决。我正在DOSBox(Masm 8086)上运行该程序。 在下面的代码中,init8255是初始化8255的宏。 msg1在.data中,它要求用户输入[1)upcount 2)downcount]。 getchar是一个宏,它将从用户[MOV AH,1 INT 21H]中获取字符

.code
mov ax,@data
mov ds,ax
init8255

;printf msg1
getchar
cmp al,1
je upcount
cmp al,2
je downcount

exit

upcount:
mov al,00h
again: outpa
call delay
call keyhit
add al,1
daa
cmp al,99h
jne again
exit

downcount:
mov al,99h
again2: outpa
call delay
call keyhit
sub al,1
das
cmp al,00h
jne again2
exit

delay proc
mov bx,0fffh
out1:mov cx,55ffh
in1:loop in1
dec bx
jnz out1
ret
delay endp

keyhit proc
 push ax ;save your precious ax value
 mov ah,1 ;checks if any key is pressed in between the count
 int 16h ;if you press any key, it becomes non-zero. so go
 jnz done to done and exit.

 pop ax ;if you don't press any key, it becomes zero. so
 take out your precious value and return.
 ret 
done:
 exit ;so you have pressed a key, go to exit.

keyhit endp
    ;line 90                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
end ;line 91

updown.asm(90)错误:A2106行太长

updown.asm(91)错误:A2106行太长

行号在上面的代码中指定(最后两行) 预先感谢

1 个答案:

答案 0 :(得分:1)

仅用鼠标选择代码即可向我显示90行中有很多空格。 底部的滚动条也使人觉得有些奇怪。

这篇文章是一个完美的示例,说明如何需要复制粘贴代码(而不是手工复制),以便我们查看发生的情况。