在MASM中增加5次

时间:2018-04-19 20:53:18

标签: assembly masm dosbox

在下面的汇编语言程序中增加数字5次,在递增数字后,消息应该只显示一次,但在我的情况下,它会显示两次。如果不使用NUM作为命名内存位置,我只使用BL作为寄存器来存储输入值并对其执行计算,则不会出现这种情况。为什么这样?

DATA_HERE SEGMENT
  MSG DB "ENTER THE NUMBER:   $"
  MSG1 DB "NUMBER AFTER INCREMENTING 5 TIMES:   $"
  NUM DB ?
DATA_HERE ENDS

CODE_HERE SEGMENT
ASSUME CS:CODE_HERE, DS:DATA_HERE
START:
  MOV AX, DATA_HERE
  MOV DS, AX

  LEA DX, MSG
  MOV AH, 09H
  INT 21H

  MOV AH, 01H
  INT 21H
  MOV NUM, AL

  ;NEWLINE
  MOV AH, 02H
  MOV DL, 0DH
  INT 21H
  MOV DL, 0AH
  INT 21H

  MOV CL, 05H
REPEAT:
  INC NUM
  DEC CL
  JNZ REPEAT

  LEA DX, MSG1
  MOV AH, 09H
  INT 21H

  MOV DL, NUM
  MOV AH, 02H
  INT 21H    
CODE_HERE ENDS
END START

输出是:

ENTER THE NUMBER:    2
NUMBER AFTER INCREMENTING 5 TIMES:    7
NUMBER AFTER INCREMENTING 5 TIMES:    _

另外,我假设递增后的数字将小于9.

如果

该怎么做
  1. 我想要一个n位输入(DOSBox只需一位数作为输入并转到下一条指令)
  2. 我想显示一个n位输出

0 个答案:

没有答案