如何在汇编时将类型从单词更改为dword?

时间:2018-02-15 05:07:34

标签: assembly

我有一个汇编程序,它对单词数组进行排序。 但我必须改变程序来排序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

0 个答案:

没有答案