当前位置: 代码迷 >> 汇编语言 >> 汇编-数组中插入1元素程序
  详细解决方案

汇编-数组中插入1元素程序

热度:570   发布时间:2016-05-02 04:34:16.0
汇编-----数组中插入一元素程序
data segment
        x dw ?
       array_head dw 3,5,15,23,37,49,52,65,78,99
       array_end dw 105
       n dw 32
data ends
;===================================================
prognam segment
main proc far
        assume cs:prognam,ds:data
start:
       push ds
       sub ax,ax
       push ax
       mov ax,data
      mov ds,ax
       mov ax,n
       mov array_head-2,0ffffh
       mov si,0
compare:
       cmp array_end[si],ax
       jle insert
       mov bx,array_end[si]
       mov array_end[si+2],bx
       sub si,2
       jmp short compare
insert:
      mov array_end[si+2],ax
      ret
main endp
prognam ends
    end start
;===================================================
下边这些不懂,这儿代码的意思是把后一元素的值赋值给前边的元素了吗??求指教。。。
     mov bx,array_end[si]
       mov array_end[si+2],bx
       sub si,2
------解决方案--------------------
是把前一元素[si]赋值于后一元素[si+2]吧,从后向前依次而来,就是将相关元素整体后移,空出来的就是放那个插入的元素了。
------解决方案--------------------
引用
那个sub  si,2 是什么意思?
 开始 si=0,array_end[si] 就是指向最后一个元素,sub si,2 的话,就是指向前面一个元素;从最后一个元素起向前逐个和待插入的数据进行比较,没到位置就将其后移,到了就插入。
这个代码功能和使用的指令都简单啊,在 debug 里单步走下就会明白了。
  相关解决方案