现在的位置: 首页 > 综合 > 正文

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

2017年12月28日 ⁄ 综合 ⁄ 共 725字 ⁄ 字号 评论关闭

题目描述:有一个首地址为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

结果

在第一次写的这道题,是比较乱的,现在从新设计了一下。

抱歉!评论已关闭.