您的位置:首页 > 其它

学习笔记(7)--对“一道基本的汇编语言题目”的改进

2013-06-18 11:14 204 查看
题目描述:有一个首地址为mem的100个字的数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。

代码:

data segment
data1 dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
dw 1,0,2,3,0,0,4,5,6,0
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax

mov cx,100
mov bx,0
mov si,(100-1)*2

loop1:
cmp data1[bx],0
jz delete
add bx,2
loop loop1
jmp output
delete:
mov di,bx
loop2:
cmp di,si
jae next
mov ax,data1[di+2]
mov data1[di],ax
add di,2
jmp loop2

next:
mov data1[si],word ptr 0
loop loop1

output:
mov cx,100
mov bx,0
loop3:
mov dx,data1[bx]
add dx,30H
mov ah,02H
int 21h
add bx,2
mov dl,' '
mov ah,02h
int 21h
loop loop3

mov ah,4CH
int 21h

code ends
end start




在第一次写的这道题,是比较乱的,现在从新设计了一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: