私は 8086 TASM を使用して組み立ての練習を少ししていますが、解決しようとしている問題に遭遇しました。主なプログラムは、大きな数の足し算と引き算を行う基本的な電卓です。ユーザー入力を保存するポイントに到達し、そこから 48 を減算して、実際の 10 進数にしようとしました。問題は、実際の数字ではなく、スマイリーとポーカー シンボルを書き出すことです。読み取りと印刷のコードは次のとおりです。
READNUM PROC
PUSH SI
MOV CX, 0
READ:
MOV AH, 1h
INT 21h
CMP CX, 9
JE ENDREAD
CMP AL, 0dh
JE ENDREAD
SUB AL, 48d
MOV [SI], AL
INC CX
INC SI
JMP READ
ENDREAD:
MOV byte ptr [SI], 0
MOV AX, 0e0ah
INT 10h
POP SI
CALL PRINTER
RET
READNUM ENDP
PRINTER PROC
CYCLE:
LODSB
CMP AL, 0
JE OVER
MOV AH, 14
INT 10H
JMP CYCLE
VER:
RET
PRINTER ENDP