我在8086/8088程序集中的程序打印了额外的字符

时间:2014-01-18 12:57:14

标签: assembly printing x86-16

A在emu8086中写了一个程序,它读取2个32位十六进制数并计算出它们的64位数产品。因为寄存器是16位的,所以我每次读取4位数字并将它们存储在其中一个中。我的问题是,当我阅读并打印(供用户查看他输入的内容)数字时,每4个数字我的程序会打印一个额外的字符。我找不到任何错误,所以我把这个例程放在这里我认为必须引起这个。

READ_HEX PROC NEAR
LL: READ
    CMP AL,'0'
    JL LL
    CMP AL,'9'
    JLE NEXT1
    CMP AL,'A'
    JL LL
    CMP AL,'F'
    JLE NEXT2
NEXT1:      
    PRINT AL
    SUB AL,30H
    RET
NEXT2:      
    PRINT AL
    SUB AL,37H  
    RET    
READ_HEX ENDP

MAKE_16_BIT PROC NEAR
    MOV CX,4
    MOV BX,0 
    MOV AX,0
L:  CALL READ_HEX
    MOV AH,0
    ROL BX,4
    ADD BX,AX
    LOOP L    
MAKE_16_BIT ENDP

1 个答案:

答案 0 :(得分:0)

根据您提供给我们的非常有限的代码数量,并且完全没有上下文,我建议您可能会错过第二个程序中的ret