zoukankan      html  css  js  c++  java
  • 汇编语言冒泡排序

    终于可以看懂很简单很简单的汇编语言代码了,很有成就感^^

    下面是一冒泡排序的汇编语言代码。

    先对代码简要说明一下:

    像“NEXT0:”,以字符串加冒号构成的是一个标签,翻译成汇编指令时会用偏移地址替代。

    原数据放在SOURCE代表的内存单元中,排序后的数据放在RESULT代表的内容单元中。

    在冒泡算法中,有两层循环,其中,寄存器BX控制外层循环,CX控制内层循环。

    N EQU 4

    STAC SEGMENT STACK
    DB 128 DUP (?)
    STAC ENDS

    DATA SEGMENT
    SOURCE DW 7003h,7002h,7008h,7001h
    RESULT DW N DUP(0)
    DATA ENDS

    CODE SEGMENT
    ASSUME CS:CODE, DS:DATA, SS:STAC
    START PROC FAR
    PUSH DS
    XOR AX,AX
    PUSH AX
    MOV AX,DATA
    MOV DS,AX
    LEA SI,SOURCE
    LEA DI,RESULT
    MOV CX,N
    NEXT0: MOV AX,[SI]
    MOV [DI],AX
    ADD SI,2
    ADD DI,2
    LOOP NEXT0
    CLD
    MOV BX,N-1
    MAL1: LEA SI,RESULT
    MOV CX,BX
    NEXT: LODSW
    CMP [SI],AX
    JAE CONT
    XCHG [SI],AX
    MOV [SI-2],AX
    CONT: LOOP NEXT
    DEC BX
    JNZ MAL1
    RET
    START ENDP
    CODE ENDS
    END START

    这段代码经过link后生成的汇编指令如下:

    14C1:0000 1E PUSH DS
    14C1:
    0001 33C0 XOR AX,AX
    14C1:
    0003 50 PUSH AX
    14C1:
    0004 B8C014 MOV AX,14C0
    14C1:
    0007 8ED8 MOV DS,AX
    14C1:
    0009 8D360000 LEA SI,[0000]
    14C1:000D 8D3E0800 LEA DI,[
    0008]
    14C1:
    0011 B90400 MOV CX,0004
    14C1:
    0014 8B04 MOV AX,[SI]
    14C1:
    0016 8905 MOV [DI],AX
    14C1:
    0018 83C602 ADD SI,+02
    14C1:001B 83C702 ADD DI,
    +02
    14C1:001E E2F4 LOOP
    0014
    14C1:
    0020 FC CLD
    14C1:
    0021 BB0300 MOV BX,0003
    14C1:
    0024 8D360800 LEA SI,[0008]
    14C1:
    0028 8BCB MOV CX,BX
    14C1:002A AD LODSW
    14C1:002B
    3904 CMP [SI],AX
    14C1:002D
    7305 JNB 0034
    14C1:002F
    8704 XCHG AX,[SI]
    14C1:
    0031 8944FE MOV [SI-02],AX
    14C1:
    0034 E2F4 LOOP 002A
    14C1:
    0036 4B DEC BX
    14C1:
    0037 75EB JNZ 0024
    14C1:
    0039 CB RETF
    14C1:003A
    0000 ADD [BX+SI],AL
    14C1:003C
    0000 ADD [BX+SI],AL
    14C1:003E
    0000 ADD [BX+SI],AL

  • 相关阅读:
    [Vue warn]: Duplicate keys detected: '1'. This may cause an update error
    【转载】 github vue 高星项目
    前端面试题目汇总摘录(JS 基础篇)
    微信小程序-滚动Tab选项卡
    日期格式与标准时间之间互转
    git rebse 操作失误回退到上一步
    js判断数组中某个值是否存在
    git 不区分文件名大小写 解决办法
    React + antd 实现动态表单添加删除功能
    leetcode 重排链表
  • 原文地址:https://www.cnblogs.com/cnbwang/p/1965974.html
Copyright © 2011-2022 走看看