• 汇编程序返回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

     

  • 相关阅读:
    docker-compose 命令不存在
    linux安装rabbitmq ssm集成rabbitmq
    tomcat参数错误 服务器400
    无限极分内 自联查询
    图片移入变大 点击图片切换 点击按钮显示图片
    js正则表达式基本书写
    随鼠标移动
    输入电话号码
    添加新句子
    窗口的弹出与关闭
  • 原文地址:https://www.cnblogs.com/liubiyonge/p/9121486.html
Copyright © 2020-2023  润新知