一个非常非常简单的汇编程序,不知道那里有错,跪求大虾帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:30:07
功能是去掉定义字符串中的空格,并显示
DSEG SEGMENT
DATA1 DB'HOW ARE YOU',0
DATA2 DB 14DUP(0)
DSEG ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
MOV AX,DSEG
MOV DS,AX
MOV BX,OFFSET DATA1
MOV CX,OFFSET DATA2

NEXT: OR AL,AL
JZ OK

MOV AL,[BX]
CMP AL,20H
JZ AAA
MOV [CX],AL
INC BX
INC CX
AAA: INC BX
INC CX
LOOP NEXT

MOV DX,OFFSET DATA2
OK:MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
我是初学者 请多提意见 谢谢

首先那个JZ OK没有用吧~~~你又没比较!~JZ没意义啊!~~
然后
AAA: INC BX
INC CX
LOOP NEXT
里的INC CX也没有用吧!~~你既然想遇到空格就跳过去还加CX干什么!~~
而且
MOV [CX],AL
INC BX
INC CX
运行完了还会去运行
AAA: INC BX
INC CX
LOOP NEXT !~~~~~~~~~所以应该加一个跳回去的程序!~~~
而且LOOP 应该由CX控制!~~~所以照下边这个就差不多了!~~
DSEG SEGMENT
DATA1 DB'HOW ARE YOU',0
DATA2 DB 14DUP(0)
DSEG ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
MOV AX,DSEG
MOV DS,AX
MOV BX,OFFSET DATA1
MOV CX,OFFSET DATA2

NEXT: OR AL,AL
MOV AL,[BX]
CMP AL,0
JZ OK
CMP AL,20H
JZ AAA
MOV [CX],AL
INC BX
INC CX
JMP NEXT
AAA: INC BX
JMP NEXT

MOV DX,OFFSET DATA2
OK:MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START