【发布时间】:2019-05-24 07:13:34
【问题描述】:
我输入了这段代码,用于使用 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 行太长
上面的代码中指定了行号(最后两行) 提前致谢
【问题讨论】: