汇编中,查找数组元素程序编译成功,但出现个小错误!

来源:百度知道 编辑:UC知道 时间:2024/06/22 08:21:04
DATAS SEGMENT
;此处输入数据段代码
BUFFER DW 5,10,32,47,53,77,89,106,115,124
N DW 10
M EQU 80
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
MAIN PROC FAR
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
PUSH DS;数据段段址入栈
SUB AX,AX ;AX值清零
PUSH AX
MOV AX,DATAS
MOV DS,AX
MOV ES,AX; 而在串指令中,目的操作数指明必须在现行附加段中。
MOV AX,M; 待查数->AX
MOV CX,N; 计数->CX
MOV DX,N; DX;数据段存放操作的数据
MOV DI,OFFSET BUFFER ;寄存器SI和DI称为变址寄存器,通常与DS一起使用,为仿问现行数据段提供段内地址偏移量!
CLD ;清除方向标志,cld即告诉程序si,di向前移动
REPNE SCASW ;串扫描指令
JE DEL ;等于转移,条件转移指令,好像是删除的意思吧!
DEC DX; DEC是减法指令,未查到时,此数插入正确的位置
MOV SI,DX ;关键字与最后一个数比较
ADD SI,DX ;ADD为加法指令
L1: CMP AX,BUFFER[SI] ;CMP

:AX与BX区别:AX在输入输出指令中作数据寄存器
; BX 在间接寻址中作基址寄存器
L3: ADD DX,2 ;修改长度
JMP NEXT1
DEL: JCXZ NEXT ;JCXZ为零时转移。 找到,删此元素
DEL1: MOV BX,[DI] ;其后元素依次前移

这里出了一点错误吧

减法指令