2013-01-05 74 views
1

假設您已經讀取了一些ascii文本到長度爲255的字符緩衝區中。怎樣才能將存儲在緩衝區中的ascii文本的長度檢索到CX寄存器中? (修改)從輸入緩衝區獲取字符串長度8086

感謝

+0

如何字符串的結束標誌着? –

+0

找到第一個'\ 0'字節。記住它從字符串開頭的偏移量。我想,甚至有一條指令。尋找'REP STR ...' –

+0

CX寄存器對於ASCII文本來說太窄。也許你想要將字符串長度變成CX - 那麼,字符串是否以null結尾?請編輯你的問題。 –

回答

2

搜索使用rep scasb的「$」,然後減去從字符串的開頭獲得的距離。

; warning: untested code. 
mov di, offset buffer 
mov al, '$' 
mov cx, 255 
repnz scasb 
sub di, offset buffer 
mov cx, di 
+0

好的謝謝..但有沒有辦法在一行代碼上做到這一點? – mac007

+2

@ mac007:不,我不這麼認爲。在彙編語言中,您通常不應該期望在單行代碼中執行很多操作(除了可能通過調用宏或該命令上的某些東西,以及是否有資格作爲單行代碼)。 –

+0

okay.thank you .. ps。代碼的作品.. – mac007

1
; STRLEN 
LEA SI,PARA 
MOV CX,-1 
DO: 
    LODSB 
    INC CX 
    CMP AL,0 
    JNE DO