我对汇编语言非常陌生,我想知道如何删除整数字符串前面的零?这是完成之前我需要的最后一件事,这是我们的教授让我们修改的:
ASSUME CS:CODE, DS:DATA
CODE SEGMENT
BUFFER DB 7 DUP (?)
DATA SEGMENT
MYNAME DB 'Name$'
DATA ENDS
START PROC
MOV AX, SEG DATA
MOV DS, AX
MOV DX,OFFSET MYNAME
MOV AH,9
INT 21H
MOV DL, 10
MOV AH, 02h
INT 21h
MOV DL, 13
MOV AH, 02h
INT 21h
MOV AX, 65505
CALL PRN_DEC
MOV AX, 539
CALL PRN_DEC
MOV AX, 5567
CALL PRN_DEC
MOV AH,4CH
INT 21H
START ENDP
PRN_DEC PROC
MOV BX,SEG CODE
MOV ES,BX
MOV DS,BX
MOV DI, OFFSET BUFFER
MOV BX,10000
MOV DX,AX
MOV CX,4
R1: MOV AX,DX
MOV DX,0
DIV BX
CMP AX,0
JNZ R4
MOV AX,20H
JMP R5
R4:
ADD AX,30H
R5: STOSB
PUSH DX
MOV AX,BX
MOV DX,0
MOV BX,10
DIV BX
MOV BX,AX
POP DX
LOOP R1
MOV AX,DX
ADD AX,30H
STOSB
MOV AL,'$'
STOSB
MOV DX,OFFSET BUFFER
MOV AH,9
INT 21H
MOV DL, 10
MOV AH, 02h
INT 21h
MOV DL, 13
MOV AH, 02h
INT 21h
RET
PRN_DEC ENDP
CODE ENDS
END START
我们的教授让我们使用 ASCII 代码将零替换为空格,但它也删除了字符串中间的零。我希望能够恢复它。
CODE SEGMENT BUFFER DB 7 DUP (?) DATA SEGMENT MYNAME DB 'Name$' DATA ENDS
看到 CODE 段中定义的 BUFFER 是多么奇怪!
你好,很抱歉问这个问题,但我该怎么做?
mov cx, 4
指令来控制循环,而是首先选择检测除数 BX 变为 1,这将在 4 次迭代后发生。然后我将这个检测向上移动,这样一旦 BX 变为 10,我就可以提前退出。这避免了 10 / 10 的愚蠢划分。为了解决替换问题,我开始计算非零数字。我为此使用 CX。如果 CX 为零,我只允许更换。loop