zoukankan      html  css  js  c++  java
  • 汇编程序返回dos

    汇编程序返回dos有两种方式:

    1.            push ds

                   sub ax,ax

                   push ax

                   ...

                   ret

    作用:一开始ds是指向psp的,在psp:0000处放着int 20h(即终止程序的指令),然后用ret,会把psp指向给cs,0给ip,运行int 21h终止代码继续运行

     代码实例:

    data segment
    datatable dw routine_1
    dw routine_2
    dw routine_3
    dw routine_4
    dw routine_5
    dw routine_6
    dw routine_7
    dw routine_8
    result dw ?
    data ends
    ;********************88
    code segment
    main proc far
    assume cs:code, ds:data
    start:
    push ds
    sub ax, ax
    push ax
    mov ax, data
    mov ds, ax
    ;mian proc start here
    ;set al = 1
    mov al, 1
    cmp al, 0
    je coutinue_main_line
    mov si,0
    l:
    shr al, 1
    jnb not_yet
    jmp datatable[si]
    not_yet:
    add si, type datatable
    jmp l
    coutinue_main_line:
    mov result, 1110h
    jmp exit
    routine_1:
    mov result, 1111h
    jmp exit
    routine_2:
    routine_3:
    routine_4:
    routine_5:
    routine_6:
    routine_7:
    routine_8:
    exit:
    ret
    main endp
    code ends
    end start

    2.

    mov ah, 4CH

    int 21H

    代码实例:

    data segment
    datatable dw routine_1
    dw routine_2
    dw routine_3
    dw routine_4
    dw routine_5
    dw routine_6
    dw routine_7
    dw routine_8
    result dw ?
    data ends
    ;********************88
    code segment
    main proc far
    assume cs:code, ds:data
    start:
    mov ax, data
    mov ds, ax
    ;mian proc start here
    ;set al = 1
    mov al, 1
    cmp al, 0
    je coutinue_main_line
    mov si,0
    l:
    shr al, 1
    jnb not_yet
    jmp datatable[si]
    not_yet:
    add si, type datatable
    jmp l
    coutinue_main_line:
    mov result, 1110h
    jmp exit
    routine_1:
    mov result, 1111h
    jmp exit
    routine_2:
    routine_3:
    routine_4:
    routine_5:
    routine_6:
    routine_7:
    routine_8:
    exit:
    mov ah, 4ch
    int 21h
    ret
    main endp
    code ends
    end start

     

  • 相关阅读:
    小程序 wx.navigateTo和 wx.redirectTo区别
    小程序返回上一级页面背景音乐报错 setBackgroundAudioState:fail title is nil!;
    centos7 安装RabbitMQ3.6.15 以及各种报错
    MYSQL创建分区时候报错
    scrapy操作mysql/批量下载图片
    深入浅出TCP与IP协议笔记
    python反射详解
    python迭代器
    python生成器
    loggong模块
  • 原文地址:https://www.cnblogs.com/liubiyonge/p/9121486.html
Copyright © 2011-2022 走看看