本文介绍了对汇编语言数组冒泡排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要冒泡与最大的7整数到最小,因此看起来像9,6,5,4,3,2,1一个无组织的数组。结果
我跑我的code编译通过,它说

我不明白这有什么code中的问题:

  code段
假设DS:code,CS:code
开始:
 MOV AX,code
 MOV DS,AX; code开始
ARR:DW 1,2,4,3,6,5,9
 MOV CH,0H
 MOV CL,1H
 MOV BH 7H
 JMP assign_nums
重新开始:
 MOV CH,0H
 MOV CL,1H
 十二月BH
 JMP assign_nums
交换:
 MOV CH,DL
 MOV CL,DH
 JMP下一
下一个:
 CMP BH,CL
 JE重启
 添加CH,1H
 添加CL,1H
 JMP assign_nums
assign_nums:
 CMP BH,0H
 JE完成
 MOV DH,[ARR + CH]
 MOV DL,[ARR + CL]
 CMP DH,DL
 JL交换
 JNL下一
完成:
 NOP
code端
年底启动


解决方案

有关你忘了输入寄存器和立即数之间用逗号一号错误。

有关的第二和第三误差CH和CL寄存器不能用于寻址存储器。使用SI,DI,或BX来代替。

由于你的数组定义为的话,你必须把它看作!结果
更改

  MOV DH,[ARR + CH]
MOV DL,[ARR + CL]

成类似(取决于你做其他的选择)

  MOV AX,[ARR + SI]
MOV DX,[ARR + DI]

请注意,您放入数组烟雨说明。这会为你管理编译它,一旦你的程序崩溃。或者将数组中的程序或跳过此行的一个单独的数据段。

 启动:
 MOV AX,code
 MOV DS,AX
 JMP START2
ARR:DW 1,2,4,3,6,5,9
START2:
 MOV CH,0H

I need to Bubblesort an unorganized array with 7 integers from biggest to smallest so it would look like 9,6,5,4,3,2,1.
I ran my code through the compiler and it says

I can't understand what is the problem with this code:

code segment
assume ds:code,cs:code
start:
 mov ax,code
 mov ds,ax    ;code start
ARR:   dw 1,2,4,3,6,5,9
 mov ch,0h
 mov cl,1h
 mov bh 7h
 jmp assign_nums
restart:
 mov ch,0h
 mov cl,1h
 dec bh
 jmp assign_nums
swap:
 mov ch,dl
 mov cl,dh
 jmp next
next:
 cmp bh,cl
 je restart
 add ch,1h
 add cl,1h
 jmp assign_nums
assign_nums:
 cmp bh,0h
 je done
 mov dh,[ARR+ch]
 mov dl,[ARR+cl]
 cmp dh,dl
 jl swap
 jnl next
done:
 nop
code ends
end start
解决方案

For the 1st error you forgot to type a comma between the register and the immediate.

For the 2nd and 3rd errors the CH and CL registers cannot be used for addressing memory. Use SI, DI, or BX instead.

Since your array is defined as words you must treat it as such!
Change

mov dh,[ARR+ch]
mov dl,[ARR+cl]

into something like (depends on other choices you make)

mov ax,[ARR+si]
mov dx,[ARR+di]

Please note that you placed the array amidst the instructions. This will crash your program as soon as you manage to compile it. Either place the array in a separate data segment of your program or jump over this line.

start:
 mov ax,code
 mov ds,ax
 jmp start2
ARR:   dw 1,2,4,3,6,5,9
start2:
 mov ch,0h

这篇关于对汇编语言数组冒泡排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-12 12:05