我想在螢屏顯示輸入字串中ASCLL碼在42H到45H 字符個數的二進制數 改來改去總是不是正確的結果
DATA SEGMENT USE16
BUF DB 255
DB ?
DB 255 DUP(?)
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:MOV AX,DATA
MOV DS,AX
MOV AH,0AH
MOV DX,OFFSET BUF
INT 21H
MOV SI,OFFSET BUF
MOV CX,[SI+1]
MOV SI,0
MOV BX,OFFSET BUF+2
LAST:CMP BYTE PTR [BX],42H
JC NEXT
CMP BYTE PTR [BX],45H
JA NEXT
INC SI
NEXT:INC BX
LOOP LAST
DISP:MOV CX,16
LAST1:MOV AL,'0'
ROL SI,1
JNC NEXT1
MOV AL,'1'
NEXT1:MOV AH,0EH
INT 10H
LOOP LAST1
MOV AH,4CH
INT 21H
CODE ENDS
END BEG
uj5u.com熱心網友回復:
輸入字符后的 MOV CX, [SI+1] 不對吧,那個只是個位元組域,下一位元組就是輸入的字符了,所以實際處理的字符數就錯了,導致最后結果不對。可以取值到 CL,然后 CH 置 0 。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63826.html
標籤:匯編語言
