汇编语言程序
DATAS SEGMENT
x dw ?
array_head dw 3,5,15,23,37,49,52,65,78,99
array_end dw 105
n dw 32
DATAS ENDS
CODES SEGMENT
main proc far
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
mov ax,datas
mov ds,ax
mov cx,11
call print
mov ax,n
mov x,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
mov cx,12
call print
ret
main endp
print proc near
pop cx
push ax
push dx
push si
mov si,0
again:
mov ax,array_head[si]
mov dl,10
div dl
add al,30h
add ah,30h
mov dh,ah
mov dl,al
mov ah,2
int 21h
mov al,dh
mov dl,al
mov ah,2
int 21h
mov dl,08h
mov ah,2
int 21h
add si,2
loop again
pop si
pop dx
pop ax
ret
print endp
CODES ENDS
END START
补充:数组插入一个元素,调用打印函数,插入前打印一次,插入后打印一次
追问:向有序数组中插入一个元素,调用打印函数,插入前打印一次,插入后打印一次
答案:call 调用函数时将sp压入栈,故pop出来的不是cx了
其他:不明白 数组插入一个元素,....
----
这个元素,那来的?用键盘输入吗? 有时间可以帮你写写
关键是需要把其他元素移位,即改变地址下标,然后插入元素。
插入元素应该是有顺序需求的的,就是插入后元素也是按顺序排列的。
分给我吧 我帮你写 50分心动了 呵呵
上一个:汇编语言判断寻址方式
下一个:用汇编语言编流水灯,有8个LED灯,LED1~LED8 灯按顺序点亮,每个等亮一秒转到下个灯,一直循环亮