在MASM中,我創建了一個緩衝區變量來保存來自鍵盤的用戶字符串輸入。我被困在如何將字符串輸入保存到該緩衝區變量中。我沒有像irvine那樣鏈接任何庫,並且想用DOS中斷來做這件事。到目前爲止,我有我一起承擔使用0AH是正確的,因爲它是用於讀取緩衝的字符輸入數組的使用DOS中斷獲取字符串輸入和顯示輸入MASM
.model small
.stack 100h
.data
buff db 25 dup(0), 10, 13
lbuff EQU ($ - buff) ; bytes in a string
.code
main:
mov ax, @data
mov ds, ax
mov ah, 0Ah ; doesn't work
mov buff, ah ; doesn't seem right
int 21h
mov ax, 4000h ; display to screen
mov bx, 1
mov cx, lbuff
mov dx, OFFSET buff
int 21h
mov ah, 4ch
int 21h
end main
行的東西。
'INT 21H/0Ah'需要的緩衝區的地址'dx'。緩衝區中的第一個字節需要是最大輸入。通過在裏面填入'ah',你說你想要十個字符(可能需要更多)。中斷返回後,第二個字節是實際輸入的字符數。輸入文本從緩衝區+2開始。 –
@FrankKotler好吧,我部分地通過執行mov dx,offset 25 \t mov ah,0Ah \t int 21h(對不起,我不確定如何在註釋中對此進行格式化)。所以輸入的字符從dx + 2開始?我將如何將它移入我的buff變量中? – Jumpman
輸入函數在dx寄存器中需要緩衝區「mov dx,OFFSET buff」的開始和緩衝區第一個字節中的最大輸入,例如10個字符的「mov [buff],ah」。輸出函數需要「mov dx,OFFSET buff + 2」和輸入的實際字符數「mov cl,[buff + 1]」。 –