[编程语言][汇编语言]另类的函数调用

来源:互联网 发布:八皇后问题算法java 编辑:程序博客网 时间:2024/05/05 11:01

在汇编语言中,在主调函数中使用call指令,并且在被调函数中使用ret,这样就实现了函数调用这个过程。本文想展示一个另类的函数调用。下文中的示例代码1为我们通常使用的函数调用,示例代码2为另类的函数调用。

示例代码1如下:

    .equ BOOT_SEG, 0x07C0    .code16    .section .text    .global _start_start:    jmp $BOOT_SEG, $mainmain:    mov %cs, %ax    mov %ax, %ds    mov %ax, %ss    mov $0x1, %ax    mov $0x2, %bx    call add    hltadd:    push %bp    mov %sp, %bp    push %bx    push %cx    push %dx    jmp save_registers    add %bx, %ax    pop %dx    pop %cx    pop %bx    mov %bp, %sp    pop %bp    ret    .org 510    .word 0xAA55

示例代码2如下:

    .equ BOOT_SEG, 0x07C0    .code16    .section .text    .global _start_start:    jmp $BOOT_SEG, $mainmain:    mov %cs, %ax    mov %ax, %ds    mov %ax, %ss    mov $0x1, %ax    mov $0x2, %bx    call add    hltsave_registers:    push $1f    push %bp    mov %sp, %bp    push %bx    push %cx    push %dx    jmp *4(%bp)1:  pop %dx    pop %cx    pop %bx    mov %bp, %sp    pop %bp    jmp *6(%bp)add:    push $1f    jmp save_registers1:  add %bx, %ax    jmp *2(%bp)    .org 510    .word 0xAA55
0 0
原创粉丝点击