【发布时间】:2021-11-13 13:31:22
【问题描述】:
我想打印出字符串的偶数字符。到目前为止,我得到了这段代码(这段代码打印出整个字符串):
.MODEL SMALL
.STACK
.DATA
adat DB "Test test",0
.CODE
main proc
MOV AX, DGROUP
MOV DS, AX
LEA BX, adat
new:
MOV DL, [BX]
OR DL, DL
CALL WRITE_CHAR
JZ stop
INC BX
JMP new
stop:
MOV AH,4Ch ;Kilépés
INT 21h
main endp
write_char proc
PUSH AX
MOV AH, 2
INT 21h
POP AX
RET
write_char endp
END main
到目前为止,我已经能够到达那里。我之前尝试过一些方法,但没有成功。
【问题讨论】:
-
至少显示其中一项不起作用的事情 :) 描述你的逻辑。 PS:将
CALL放在OR和JZ之间是个坏主意。 -
@Jester 我这样尝试过:创建了一个 CX 寄存器并加 1。我不知道这是否可能,但不知何故我想知道 CX 是否为奇数,然后如果是偶数则打印字符。
-
是的,也可以。你在哪里卡住了。另一种方法是简单地将
BX增加 2,但随后也要小心检查奇数地址处的终止零。 -
我一直纠结于如何检查 CX 是否为偶数。
-
通常的方法是简单地检查最低有效位,例如
test cx, 1.