如何删除数组中的值????

jacky_shen 2004-07-14 01:45:08
TITLE 1017

DATA SEGMENT
COUNT DW 0
CNT DW ?
TMP DW ?
DATA ENDS

EXTR SEGMENT
LIST DW 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0
EXTR ENDS

CODE SEGMENT
ASSUME DS:DATA
ASSUME CS:CODE
ASSUME ES:EXTR

REMOVE PROC
PUSH CX
PUSH DI
DO:
MOV BX, DI
ADD DI, 2
MOV AX, ES:[DI]
MOV ES:[BX], AX
LOOP DO
POP DI
POP CX
RET
REMOVE ENDP

START:
MOV AX, DATA
MOV DS, AX
MOV AX, EXTR
MOV ES, AX

MOV CX, ES:LIST
MOV CNT, CX
MOV AX, 2
MOV DI, ES:OFFSET LIST[2]
SUB DI, 2

TEST AX, 0FFFFH
JZ EXIT
A:
ADD DI, 2
CMP AX, ES:[DI]
LOOPNE A

PUSH CX
PUSH DI
DO:
MOV BX, DI
ADD DI, 2
MOV AX, ES:[DI]
MOV ES:[BX], AX
LOOP DO
POP DI
POP CX

LOOP A

EXIT:
MOV AH, 4CH
INT 21H

CODE ENDS
END START

AX存放一个数值(2),LIST是一个数组。
上面的程序是将LIST中与AX相同的值删除。
不知道为什么不行。
...全文
170 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
SDFDSAC 2004-07-17
  • 打赏
  • 举报
回复
对不起,我的错了,忘了附加段
csdsjkk()是正确的
SDFDSAC 2004-07-16
  • 打赏
  • 举报
回复
DATA SEGMENT
COUNT DW 0
CNT DW ?
TMP DW ?
DATA ENDS

EXTR SEGMENT
LIST DW 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0
EXTR ENDS

CODE SEGMENT
ASSUME DS:DATA
ASSUME CS:CODE
ASSUME ES:EXTR

REMOVE PROC
PUSH CX
PUSH DI
DO:
MOV BX, DI
ADD DI, 2
MOV AX, ES:[DI]
MOV ES:[BX], AX
LOOP DO
POP DI
POP CX
RET
REMOVE ENDP

START:
MOV AX, DATA
MOV DS, AX
MOV AX, EXTR
MOV ES, AX

MOV CX, ES:LIST
MOV CNT, CX
MOV AX, 2
MOV DI, OFFSET LIST[2] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SUB DI, 2

TEST AX, 0FFFFH
JZ EXIT
A:
ADD DI, 2
CMP AX, ES:[DI]
LOOPNE A

jne exit ;;;

push ax ;;;

PUSH CX
PUSH DI
DO1:
MOV BX, DI
ADD DI, 2
MOV AX, ES:[DI]
MOV ES:[BX], AX
LOOP DO1
POP DI
POP CX

pop ax ;;;

LOOP A

EXIT:
MOV AH, 4CH
INT 21H

CODE ENDS
END START
csdsjkk 2004-07-14
  • 打赏
  • 举报
回复
DATA SEGMENT
COUNT DW 0
CNT DW ?
TMP DW ?
DATA ENDS

EXTR SEGMENT
LIST DW 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0
EXTR ENDS

CODE SEGMENT
ASSUME DS:DATA
ASSUME CS:CODE
ASSUME ES:EXTR

REMOVE PROC
PUSH CX
PUSH DI
DO:
MOV BX, DI
ADD DI, 2
MOV AX, ES:[DI]
MOV ES:[BX], AX
LOOP DO
POP DI
POP CX
RET
REMOVE ENDP

START:
MOV AX, DATA
MOV DS, AX
MOV AX, EXTR
MOV ES, AX

MOV CX, ES:LIST
MOV CNT, CX
MOV AX, 2
MOV DI, ES:OFFSET LIST[2]
SUB DI, 2

TEST AX, 0FFFFH
JZ EXIT
A:
ADD DI, 2
CMP AX, ES:[DI]
LOOPNE A

jne exit ;;;

push ax ;;;

PUSH CX
PUSH DI
DO1:
MOV BX, DI
ADD DI, 2
MOV AX, ES:[DI]
MOV ES:[BX], AX
LOOP DO1
POP DI
POP CX

pop ax ;;;

LOOP A

EXIT:
MOV AH, 4CH
INT 21H

CODE ENDS
END START

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧