2014-01-18 46 views
1

在emu8086中寫了一個程序,它讀取2個32位十六進制數並計算它們的產品,這是一個64位數字。由於寄存器是16位的,我每次讀取4位數字並將它們存儲在其中一個數字中。我的問題是,當我讀取並打印(用於查看他鍵入的數字)數字時,我的程序每4位打印一個額外的字符。我找不到任何錯誤,所以我把這個例程放在這裏,我認爲必須引起這個。我在8086/8088程序集中的程序打印多餘字符

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 

回答

0

從你給我們的,完全免費的上下文的代碼非常有限的量,我建議你可能會丟失從第二個過程ret

+0

抱歉給這麼小的一部分,但程序混亂,我知道問題在這裏。信不信由你,我沒有看到過,沒有回報! thnx很多! – petyhaker