1.在A1单元定义10个两位16进制无序数字,求出最大值,存放在A2开始的存储区
2.将1中数据进行排序,并放在原来的地方
3.有一个存放10个数据的数组,数据自存,至少有两个以上0存在,试编制一个程序,删除数组中所有为0的项,并将后续项向前压缩,最后将数组的剩余部分补上零
急求,感谢各位大神!!
1 个解决方案
#1
[data segment
a1 dw 12,34,56,78,90,21,43,65,87,9
c equ ($-a1)/2
a2 dw 0
data ends
assume cs:cseg,ds:data
cseg segment
start:
mov ax,data
mov ds,ax
mov cx,c
dec cx
mov bx,2
mov ax, a1[0]
$8:
cmp ax,a1[bx]
ja $9
mov ax,a1[bx]
$9:
inc bx
inc bx
loop $8
mov a2,ax
call print
mov ah,0eh
mov al,0dh
int 10h
mov al,0ah
int 10h
mov cx,c*2
dec cx
dec cx
$0:
mov bx,0
$2:
mov ax,a1[bx]
cmp ax,a1[bx+2]
ja$1
xchg ax,a1[bx+2]
mov a1[bx],?ax
$1:
inc bx
inc bx
cmp bx, cx
jl $2
dec cx
dec cx
jg $0
mov cx,c
mov bx,0
$3:
mov ax,a1[bx]
call print
mov ax,0e20h
int 10h
inc bx
inc bx
loop $3
mov ah,4ch
int 21h
print proc near
push cx
push bx
xor cx,cx
mov bx,10
Q0:
xor dx,dx
div bx
xor dx,0e30h
push dx
inc cx
cmp ax,0
jnz Q0
Q1:
pop ax
int 10h
loop Q1
pop bx
pop cx
ret
print ends
cseg ends
end start
在网上看到的一位大神的解答,但是看得不是很明白。。。]
a1 dw 12,34,56,78,90,21,43,65,87,9
c equ ($-a1)/2
a2 dw 0
data ends
assume cs:cseg,ds:data
cseg segment
start:
mov ax,data
mov ds,ax
mov cx,c
dec cx
mov bx,2
mov ax, a1[0]
$8:
cmp ax,a1[bx]
ja $9
mov ax,a1[bx]
$9:
inc bx
inc bx
loop $8
mov a2,ax
call print
mov ah,0eh
mov al,0dh
int 10h
mov al,0ah
int 10h
mov cx,c*2
dec cx
dec cx
$0:
mov bx,0
$2:
mov ax,a1[bx]
cmp ax,a1[bx+2]
ja$1
xchg ax,a1[bx+2]
mov a1[bx],?ax
$1:
inc bx
inc bx
cmp bx, cx
jl $2
dec cx
dec cx
jg $0
mov cx,c
mov bx,0
$3:
mov ax,a1[bx]
call print
mov ax,0e20h
int 10h
inc bx
inc bx
loop $3
mov ah,4ch
int 21h
print proc near
push cx
push bx
xor cx,cx
mov bx,10
Q0:
xor dx,dx
div bx
xor dx,0e30h
push dx
inc cx
cmp ax,0
jnz Q0
Q1:
pop ax
int 10h
loop Q1
pop bx
pop cx
ret
print ends
cseg ends
end start
在网上看到的一位大神的解答,但是看得不是很明白。。。]
#1
[data segment
a1 dw 12,34,56,78,90,21,43,65,87,9
c equ ($-a1)/2
a2 dw 0
data ends
assume cs:cseg,ds:data
cseg segment
start:
mov ax,data
mov ds,ax
mov cx,c
dec cx
mov bx,2
mov ax, a1[0]
$8:
cmp ax,a1[bx]
ja $9
mov ax,a1[bx]
$9:
inc bx
inc bx
loop $8
mov a2,ax
call print
mov ah,0eh
mov al,0dh
int 10h
mov al,0ah
int 10h
mov cx,c*2
dec cx
dec cx
$0:
mov bx,0
$2:
mov ax,a1[bx]
cmp ax,a1[bx+2]
ja$1
xchg ax,a1[bx+2]
mov a1[bx],?ax
$1:
inc bx
inc bx
cmp bx, cx
jl $2
dec cx
dec cx
jg $0
mov cx,c
mov bx,0
$3:
mov ax,a1[bx]
call print
mov ax,0e20h
int 10h
inc bx
inc bx
loop $3
mov ah,4ch
int 21h
print proc near
push cx
push bx
xor cx,cx
mov bx,10
Q0:
xor dx,dx
div bx
xor dx,0e30h
push dx
inc cx
cmp ax,0
jnz Q0
Q1:
pop ax
int 10h
loop Q1
pop bx
pop cx
ret
print ends
cseg ends
end start
在网上看到的一位大神的解答,但是看得不是很明白。。。]
a1 dw 12,34,56,78,90,21,43,65,87,9
c equ ($-a1)/2
a2 dw 0
data ends
assume cs:cseg,ds:data
cseg segment
start:
mov ax,data
mov ds,ax
mov cx,c
dec cx
mov bx,2
mov ax, a1[0]
$8:
cmp ax,a1[bx]
ja $9
mov ax,a1[bx]
$9:
inc bx
inc bx
loop $8
mov a2,ax
call print
mov ah,0eh
mov al,0dh
int 10h
mov al,0ah
int 10h
mov cx,c*2
dec cx
dec cx
$0:
mov bx,0
$2:
mov ax,a1[bx]
cmp ax,a1[bx+2]
ja$1
xchg ax,a1[bx+2]
mov a1[bx],?ax
$1:
inc bx
inc bx
cmp bx, cx
jl $2
dec cx
dec cx
jg $0
mov cx,c
mov bx,0
$3:
mov ax,a1[bx]
call print
mov ax,0e20h
int 10h
inc bx
inc bx
loop $3
mov ah,4ch
int 21h
print proc near
push cx
push bx
xor cx,cx
mov bx,10
Q0:
xor dx,dx
div bx
xor dx,0e30h
push dx
inc cx
cmp ax,0
jnz Q0
Q1:
pop ax
int 10h
loop Q1
pop bx
pop cx
ret
print ends
cseg ends
end start
在网上看到的一位大神的解答,但是看得不是很明白。。。]