逆向 - 汇编 - 第三天

中断

  • 中断是由于软件的或者硬件的信号, 使 CPU 暂停当前任务, 转而去执行另一段子程序.
  • 分类:
    • 硬中断 (外中断): 由外部设备(网卡, 硬盘)引发的
    • 软中断(内中断): 由执行中断指令引发的.
  • 可以通过指令 int n 产生中断
    • n 是中断码, 内存中有一张中断向量表, 用来存放中断码对应中断处理程序的入口地址,
    • CPU 在接收到中断信号后, 暂停当前正在执行的程序, 跳转到中断码对应的中断向量表地址处, 去执行中断处程序.
  • 常见中断
    • int 10h 用于执行 BIOS 中断
    • int 3 断点中断, 用于调试
    • int 21h 返回 AH 寄存器存储功能信号

DOS 系统功能调用

  • 由DOS 提供的一组实现特殊功能的子程序供程序员调用.
  • 涉及屏幕显示, 文件管理, IO 管理等
  • 每个子程序都有一个功能号, 所有的功能调用格式都是一致的.
    • 系统功能号送到寄存器 AH 中;
    • 入口参数送到指定的寄存器中;
    • 用 int 21H 指令执行功能调用 ;
    • 根据出口参数分析功能调用执行情况;

  • LIFO (后进先出)
  • SS(stack segment)栈段寄存器, SS:SP 指向栈顶元素
  • push(入栈), pop (出栈)

Loop 指令

  • loop 指令和 cx 寄存器配合使用, 用于循环操作类似 for while
  • 使用格式

mov cx ,循环次数
循环执行程序代码
loop 标号


  • loop 执行流程
      1. 现将 cx 寄存器的值 - 1, cx = cx-1;
      1. 判断 cx 的值,
      • 如果 cx 值不为0, 执行标号的代码, 重复1
      • 如果为0, 执行 loop 后面的代码

8086 伪指令

  • db(define byte)自定义字节
  • dw(define word)自定义字
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,570评论 8 114
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,470评论 0 1
  • 编程语言的发展 机器语言由0和1组成 汇编语言(Assembly Language)用符号代替了0和1,比机器语言...
    阿凡提说AI阅读 4,315评论 0 15
  • 春节作为中国人最隆重的节日,总是充满了各种仪式感和各种不得不完成的事项、行程。虽然有几天长假,但一个春节过下来,常...
    三七海棠qxy007阅读 313评论 0 1
  • Java中的枚举就像任何其他类一样,具有一组预定义的实例。 这里有几个例子来强调如何使用Java Enum。 1....
    草木不语只深深绿阅读 238评论 1 0