我对汇编语言非常非常陌生,我想知道如何删除整数字符串前面的零?这是我在完成它之前需要的最后一件事,这是我们的教授让我们修改的:
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码把零替换成空格,但它也去掉了字符串中间的零。我希望能够恢复它。
1条答案
按热度按时间jq6vz3qz1#
字符串
在CODE段中定义BUFFER是多么有趣啊!
你好,很抱歉问一下怎么做?
mov cx, 4
来控制loop
指令的循环,而是首先选择检测除数BX变为1,这将在4次迭代后发生。然后我将此检测上移,因此一旦BX变为10,我就可以提前退出。这避免了愚蠢的10 / 10除法。型