我有一个汇编程序,它对单词数组进行排序。 但我必须改变程序来排序dword数组。你能救我吗?
我试图切换到32位e **寄存器,但它破坏了我的程序。 (我想我也必须换班,但我不确定) 此外,我试图改变从2到4的转变,但它也没有奏效。 (我也很困惑为什么)
我的汇编程序代码:
.MODEL small
STACK SEGMENT PARA STACK 'stack'
DW 100h DUP(?)
STACK ENDS
DATA SEGMENT PARA PUBLIC 'data'
mas DW 5, -2, -1, 1, 18, -6, 5, 6, -3, -20, -17, 7, 0
res DW 13 DUP(0)
counter DW 22
maxsize EQU $-mas
one EQU 2
DATA ENDS
CODE SEGMENT PARA PUBLIC 'code'
ASSUME CS: CODE, DS: DATA, SS: STACK
.486
START:
MOV AX, DATA
MOV DS, AX
lea DI, offset mas
LEA BX,mas
MOV CX,counter
DEC CX
MOV SI,0
@@ForI:
MOV DI,counter
DEC DI
SHL DI,1
@@ForJ:
MOV AX,[BX+DI-one]
NOT AX
AND AX,[BX+DI]
JNS @@NextJ
XCHG AX,[BX+DI]
XCHG AX,[BX+DI-one]
XCHG AX,[BX+DI]
@@NextJ:
SUB DI,one
CMP DI,SI
JA @@ForJ
ADD SI,one
LOOP @@ForI
second:
xor cx, cx
xor bx, bx
sum:
mov dx, [bx]
mov si, bx
mov ax, dx
xor dx, dx
mov bx, one
div bx
xor bx, bx
mov bx, si
cmp dx, 01h
jl slozh
continue:
mov ax, bx
cmp ax, counter
jg last
add bx, one
jmp sum
slozh:
add cx, [bx]
jmp continue
last:
xor bx, bx
xor bp, bp
check:
mov dx, [bx]
cmp dx, 0
JE EXIT
cmp dx, cx
jg addel
cmp bx, counter-1
jg EXIT
add bx, one
jmp check
addel:
mov res[bp], dx
add bp, one
add bx, one
jmp check
EXIT:
MOV EAX, 4c00h
INT 21h
end START