汇编简单实现两个数值的交换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
assume ss:stack, ds:data, cs:code
;堆栈段
stack segment
    db 20 dup(1);初始化20个字节空间
stack ends
;数据段
data segment
    db 20 dup(2);初始化20个字节空间    
data ends
;代码段
code segment
start:
    ;初始化堆栈寄存器
    mov ax, stack
    mov ss, ax  
    mov sp, 20;复位栈顶
    ;初始化数据寄存器
    mov ax, data
    mov ds, ax
 
    mov ax, 1122h
    mov bx, 3344h
    ;将ax、bx分别进栈
    push ax
    push bx
    ;根据栈后进先出的原则,可交换ax与bx的值
    pop ax;将栈顶数据赋值给ax,当前栈顶为bx的值
    pop bx;bx已出栈,当前栈顶为ax的值
    ;退出程序
    mov ah, 4ch
    int 21h
code ends
end start

Leave a Reply