• 汇编语言冒泡排序


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

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

    先对代码简要说明一下:

    像“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

  • 相关阅读:
    c#线程带参数
    svn自动update到指定目录
    204. 计数质数
    178. 分数排名
    387. 字符串中的第一个唯一字符
    374. 猜数字大小
    371. 两整数之和
    350. 两个数组的交集 II
    326. 3的幂
    219. 存在重复元素 II
  • 原文地址:https://www.cnblogs.com/cnbwang/p/1965974.html
Copyright © 2020-2023  润新知