汇编语言 分支结构

来源:百度知道 编辑:UC知道 时间:2024/06/14 13:18:08
选做:有一首地址为mem的100字节的数组,试编程删除所有数值为0的项,把后续数字前压,再将剩余部分补0。
例:
data segment
Mem 0,0,0,1,2,2,3,0,0,3,3,9 dup(0),4,4,0,0,4,0,4,5 dup(5),60 dup(0),6 dup(6),0,0
data ends
变为:
Data:0 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6,0…….0

如题,高手们救急~!!!!!!!!!!!!
谢谢!!!答对了加分!~!!!!!!!!!

DATA SEGMENT
MEM DB 0,0,0,1,2,2,3,0,0,3,3,9 DUP(0),4,4,0,0,4,0,4,5 DUP(5),60 DUP(0),6 DUP(6),0,0
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
LEA DI,MEM
MOV CX,100 //设置循环次数
ABC:CMP BYTE PTR[DI],0 //比较是否为0
JNZ LOP
MOV DX,CX //保存CX中的内容
DEC CX //后续项前移次数为CX-1
MOV BX,DI
XYZ:MOV AX,01H[BX]
MOV [BX],AX //将存储单元内容为零的部分用后面高地址部分的内容覆盖
INC BX
LOOP XYZ
MOV 01H[BX],0 //补0
MOV CX,DX //还原CX的内容
LOP:INC DI //地址加1
LOOP ABC
MOV AX,4C00H
INT 21H
CODE ENDS
END START