我已经编写了这段代码,由于某些原因,它只会打印部分句子而且也没有将DL
中的数字分配给字符串并打印出一个' heart&# #39;代替。
我检查了TurboDebugger,除此之外的所有内容都完美无缺。
我添加了相关部分:
.MODEL SMALL
.STACK 100h
.DATA
ARR1 DW 333,20989,3456,2082
ARR2 DW 333,15,5436,2082
ARR3 DW ?
ANSWER DB 'The last digit is: X',13,10,'$'
TEN DW 10
.CODE
MOV AX,@DATA ; DS can be written to only through a register
MOV DS,AX ; Set DS to point to data segment
MAX:
CMP AX,10
;MAX<10
JL LESSTHAN10
;MAX>10
MOV DX,0
DIV TEN
MOV ANSWER[19],DL
JMP PRINTANSWER
PRINTANSWER:
MOV AH,9 ; Set print option for int 21h
MOV DX,OFFSET ANSWER ; Set DS:DX to point to answerString
INT 21h ; Print DisplayString
以下是我尝试组装此内容的截图:
答案 0 :(得分:2)
由于某种原因它只打印部分句子
这是因为当您在数组 ARR3 中写入内容时,您正在覆盖消息 ANSWER 中的前6个字符。
确保通过编写以下内容为第3个阵列提供足够的空间:
ARR3 DW 4 dup (?)
ANSWER DB 'The last digit is: X',13,10,'$'
它也没有将DL中的数字分配给字符串并打印出一个“心脏”字样&#39;代替。
除以10的除数给出了一个从0到9的数字,你想要打印成一个字符。你需要先将它变成一个角色。这是通过向其添加48来完成的。这样做的一种优雅方式是编写add dl, "0"
。
DIV TEN
add dl, "0"
MOV ANSWER[19],DL