2014-01-16 95 views
0

我學習ASM,我知道,如果我想借此從鍵盤的數字,我可以簡單的做到這一點:我可以在1,2,4字節中寫入多少個符號? ASM

inputarea db 3 DUP(' '),'$' 

mov ah,0Ah 
mov dx,offset inputarea 
int 21h 

在這種情況下,直到我達到255.我可以寫符號,但有一個db(數據字節)類型,所以在這種情況下,我只能寫最多3個數字,這對於asm來說是正確的(123,100等等)。但是如果有Data WordDD類型,我可以寫多少個符號來執行?提示:例如,如果我輸入'數據字節',那麼這會排除1字節的內存。而且只能存儲3個數字。其他類型呢?

回答

1

我知道,如果我想借此從鍵盤的數字,我可以簡單的做到這一點: ...

不,它不是那麼簡單 - 你必須設置一個傳輸緩衝區正確。功能0ah從標準輸入讀取和寫入讀取到緩衝區中的字符,看Interrupts MS-DOS Function Calls (INT 21h),第4頁:

count = 80 
KEYBOARD STRUCT 
    maxInput BYTE count  ; max chars to input 
    inputCount BYTE ?  ; actual input count 
    buffer BYTE count DUP(?) ; holds input chars 
KEYBOARD ENDS 

.data 
inputarea KEYBOARD <> 

.code 
    mov ah, 0Ah 
    mov dx, OFFSET inputarea 
    int 21h 

然後,你最終會在輸入緩衝區的字符串,你需要轉換爲數字。

+0

另一個版本我認爲是:inputarea db 3,?,3 DUP('')。不是嗎? – solvator

+0

是的,這也應該工作 - 上述結構基本上擴展到 –

相關問題