美文网首页iOS 安全攻防
汇编-----打印中断码、call&&ret指令

汇编-----打印中断码、call&&ret指令

作者: 那时J花开 | 来源:发表于2018-05-04 18:09 被阅读0次

mov ah, 9h int 21h 打印中断

21h中断中的9h中断码代表打印, CPU拿到需要打印的数据, 将其放到显示内存(显存)上,完成打印操作

assume cs:code, ds:data, ss:stack
stack segment
        db 20 dup(1) ; 定义20个字节作为栈段
stack ends

data segment
        db 20 dup(2)
        str db 'hello world!$'
data ends
code segment
start:
      
      mov dx, offset str ;将str这个偏移地址赋给dx
      mov ah, 9h 
      int 21h ;当CPU读取到21H中断中的这个中断中的9H中断码时, CPU会取出dx中所保存的值当做字符数据的偏移地址, 这个时候相当于找到了DS:[20],当读取到  $  时就会结束

      mov ah , 4ch
      int 21h
code end
end start

Call 和 ret 指令

  • Call指令和ret指令要配合使用

    Call 指令, 相当于函数的调用

    • Call 标号来调用
    • 将下一条指令的偏移地址入栈
    • 跳转到定位地址执行指令

    ret 指令: 将栈顶的值pop给IP

    • 任何函数在ret之前都会将函数内部声明的变量pop掉, 用来维持栈平衡, 保证sp指向的是下一条指令的地址
assume cs:code, ds:data, ss:stack
stack segment
        db 20 dup(1) ; 定义20个字节作为栈段
stack ends

data segment
        db 20 dup(2)
        str db 'Hello world!$'
data ends

code segment
start:
      mov ax, data
      mov ds, ax
      mov ax, stack
      mov ss, ax

      mov ax, 1122H
      call print  ;相当于函数调用
      mov ax, 4ch
      int 21h
print: ;为什么要写在中断之后呢?因为code会从上往下依次执行
      mov ax, 3344h 
      push ax ; 进行了push操作后 必须进行pop保持栈平衡, 防止ret时pop的数据不是下一条指令的地址
      mov dx, offset str ; 通过offset将str的偏移地址存入dx
      mov ah, 9h ; 
      int 21h
      pop ax 
      ret
      
code end
end start

相关文章

  • 汇编-----打印中断码、call&&ret指令

    mov ah, 9h int 21h 打印中断 21h中断中的9h中断码代表打印, CPU拿到需要打印的数...

  • 逆向笔记(三)-汇编指令

    汇编指令 针对汇编来说,汇编指令是必须了解的,而且汇编中汇编指令比较多,但是每一个汇编指令对应的机器码是固定不变的...

  • 彻底搞清楚Java并发 (二) 底层实现

    Java代码 -> Java字节码 -> 汇编指令(汇编指令是cpu指令的集合) Volatile Java语言提...

  • 汇编学习记录13 INT指令

    1.INT指令 int指令格式为:int n,n为中断码的类型,功能是引发对应中断码的中断 int指令执行的时候分...

  • 汇编学习笔记(一)

    基础知识 汇编语言,有 3 类指令组成: 汇编指令:机器码的助记符,有对应的机器码。 伪指令:没有对应机器码,由编...

  • 汇编1基础知识

    1、汇编语言的组成 1、 汇编指令:机器码的助记符,有对应的机器码 2、 伪指令:没有对应的机器码...

  • 基础-3

    系统性编码 在汇编中只有两种指令:汇编指令和伪指令,前者对应有机器码,后者没有对应机器码而是对编译器的编译动作进行...

  • 《汇编语言》读书笔记:基础知识

    1. 汇编语言的组成 汇编指令:机器码的助记符,有对应的机器码伪指令:没有对应机器码,编译器执行,计算机不执行其他...

  • 基础知识

    汇编是机器语言,汇编语言分为:(1)汇编指令,机器码的助记符。有对应的机器码。(2)伪代码,没有对应的机器码,由编...

  • 程序破解及ELF文件格式分析

    程序破解 NOP、JNE、JE、JMP、CMP汇编指令的机器码 NOP:NOP指令即“空指令”。执行到NOP指令时...

网友评论

    本文标题:汇编-----打印中断码、call&&ret指令

    本文链接:https://www.haomeiwen.com/subject/nowdrftx.html