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

     

  • 相关阅读:
    A1039 Course List for Student (25 分)
    A1101 Quick Sort (25 分)
    日常笔记6C++标准模板库(STL)用法介绍实例
    A1093 Count PAT's (25 分)
    A1029 Median (25 分)
    A1089 Insert or Merge (25 分)
    A1044 Shopping in Mars (25 分)
    js 验证
    根据string获取对应类型的对应属性
    HTML 只能输入数字
  • 原文地址:https://www.cnblogs.com/liubiyonge/p/9121486.html
Copyright © 2011-2022 走看看