Chinaunix首页 | 论坛 | 博客
  • 博客访问: 452882
  • 博文数量: 98
  • 博客积分: 6011
  • 博客等级: 准将
  • 技术积分: 1030
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-23 13:19
文章分类

全部博文(98)

文章存档

2011年(2)

2009年(2)

2008年(31)

2007年(35)

2006年(28)

我的朋友

分类:

2006-12-12 23:22:39

    在附加数据段落中有一首址为ADDR的无序字数组,数据的第一个为字数组长充,第二个字开始存放数组各元素。在KEY单元存放一要删除的字数据。要求编一程序,在数组中查找该数,如果找到该数,将其中数组中删除,并修改数组长度。
源码:
EXTRA SEGMENT
ADDR DW 0AH,2221H,2323H,5312H,2414H,2624H,2142H,1124H,1556H,1232H,2675H
KEY = 214dH
COUNT DW 2
BUF1 DB 'NOT FOUND$'
EXTRA ENDS
STACK SEGMENT
 DB 200 DUP (0)
STACK ENDS
CODE  SEGMENT
 ASSUME DS:EXTRA,SS:STACK,CS:CODE
START: MOV AX,EXTRA
 MOV DS,AX
 LEA SI,ADDR
 MOV CX,[SI]
 MOV BX,COUNT
LOOPA: CMP WORD PTR [BX+SI],KEY
 JE  LOOPB
 INC BX
 INC BX
 DEC CX
 JNE LOOPA
 JMP EXIT1
LOOPB: MOV AX,WORD PTR [SI]
 MOV DX,BX
 SHR DX,1
 SUB AX,DX
LOOPC: CMP AX,0
 JE  LOOPD
 MOV DX,[BX+2+SI]
 MOV [BX+SI],DX
 INC BX
 INC BX
 DEC AX
 JMP LOOPC
LOOPD: AND WORD PTR 20[SI],0
EXIT1: CMP CX,0
 JZ  FLAG
 DEC WORD PTR [SI]
 JMP EXIT
FLAG: LEA DX,BUF1
 MOV AH,9
 INT 21
EXIT: MOV AH,4CH
 INT 21H
CODE ENDS
 END START
                                                                                   
   水平有限,现在还不知道怎么样调用DOS系统功能释放内存,删除后只能用后面的数据覆盖被删除的数,再将最后一位清零。。。。哪果哪位会释放内存的话,请指点。。。
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
 
阅读(1149) | 评论(0) | 转发(0) |
0

上一篇:Happy birth day!

下一篇:指针解惑(1)

给主人留下些什么吧!~~