当前位置: 首页 > 知识库问答 >
问题:

x86 MASM汇编语言中填充数组后的排序

齐典
2023-03-14
.data
evenStart    dword          11h
oddStart     dword          20h
darray       dword          15 dup (?)
.code
main PROC
    mov esi, OFFSET darray
    xor ecx, ecx
    
L1: 
    mov ebx, OFFSET evenStart
    test cl,1
    jz iseven
    mov ebx, OFFSET oddStart
    
iseven:
    mov eax, [ebx]
    inc dword ptr [ebx]
    mov dword ptr [esi + 4*ecx],eax
    inc ecx
    cmp ecx,15
    jb L1
    
    exit
main ENDP
END main

所以项目要求我填充未初始化的数组,我做到了。但它也要求我按降序对这个数组进行排序,然后将数组的中间元素放入eax寄存器,并调用dumpregs。这是我陷进去的部分。任何关于如何进行的帮助都是很好的。谢谢!

共有1个答案

孙财
2023-03-14

下一个冒泡排序使用嵌套循环。因为数组有15个元素,所以外部循环在第一次迭代期间可以进行14次比较。对于外部循环的每一次迭代,它必须少做一次比较,因为最小的元素在数组的末尾冒泡了。

    mov ebx, 15-1      ; Outer loop iteration count
OuterLoop:
    mov esi, offset darray

    mov ecx, ebx       ; Inner loop iteration count
InnerLoop:
    lodsd
    mov edx, [esi]
    cmp eax, edx
    jge Skip
    mov [esi-4], edx   ; Swap these 2 elements
    mov [esi], eax
Skip:
    dec ecx
    jnz InnerLoop

    dec ebx
    jnz OuterLoop

未排序数组:11h、20h、12h、21h、13h、22h、14h、23h、15h、24h、16h、25h、17h、26h、18h

排序序列为:26h、25h、24h、23h、22h、21h、20h、18h、17h、16h、15h、14h、13h、12h、11h

 类似资料:
  • 机器语言 机器语言是指令的集合。 汇编语言 汇编语言的主体是汇编指令。 存储器 随机存储器RAM,可读可写,必须带电存储,关机后存储的内容丢失 只读存储器ROM,只读,关机后其中的内容不丢失 装有 BIOS (基本输入输出设备)的ROM 接口卡上的RAM:显存 外存(storage,磁盘)和内存(memory,主存,高速缓存) 内存地址空间 存储单元:1个字节(byte) 总线 地址总线:CPU是

  • 我很难理解由一个简单的C程序的gcc创建的汇编语言输出。 以下是该程序的C代码: 下面是gcc创建的汇编代码: 我很难理解汇编代码中某些指令的操作数顺序(参考内存布局,请参阅内存布局图)。首先,有指令 它将调用方的基指针推送到堆栈上。这条指令之后是下面的指令: 此指令应将被调用方的基指针设置为当前堆栈指针的值。但是,两个操作数的顺序是否应该相反(例如,movq%rbp,%rsp)? 类似的“问题”

  • 上面介绍的在Solidity中嵌入的内联汇编语言也可以单独使用。实际上,它是被计划用来作为编译器的一种中间语言。在这个目的下,它尝试达到下述的目标: 使用它编写的代码要可读,即使代码是从Solidity编译得到的。 从汇编语言转为字节码应该尽可能的少坑。 控制流应该容易检测来帮助进行形式验证与优化。 为了达到第一条和最后一条的目标,Solidity汇编语言提供了高层级的组件比如,for循环,swi

  • 我想将高级语言中的简单循环转换为汇编语言(对于emu8086),比如说,我有以下代码: 或 或 如何在emu8086中执行此操作?

  • 《汇编语言》(Assembly Language)是计算机专业中一门重要的基础课程,是一种面向机器的低级语言。它依赖于硬件,能通过巧妙的程序设计充分发挥硬件的潜力。汇编语言程序产生的代码运行效率高。因此,到目前为止,许多软件系统(例如操作系统等)的核心部分仍然用汇编语言来编写。

  • 本文向大家介绍Objective-C语言排序数组,包括了Objective-C语言排序数组的使用技巧和注意事项,需要的朋友参考一下 示例