zoukankan      html  css  js  c++  java
  • 汇编语言 第三版王爽 学习笔记与总结

    X86 汇编语言总结

    1. 寄存器

    1. CS:IP

      CS是段地址,IP是偏移地址
      CS:IP 指向CPU当前要读取指令的地址
      CS x 16 + IP

    2. DS
      DS也是一个段寄存器
      当使用 [idata] 或者 [bx] 的时候,idata 或者bx就是偏移地址。
      则指向的确切地址就是 DS:[idata] 或者 DS:[bx]

    3. CX
      是一个loop的计数器。
      当运行到loop指令段的时候,先让CX减一,如果CX不等于 0 . 则跳转

    4. SI 和 DI
      是8086CPU中和bx功能相近的寄存器,但不能分成2个8位寄存器来使用

    5. AX,BX,CX,DX
      都可以分为 高和低 2个8位寄存器

    2. 语法

    1. mov
      相当于赋值
    2. add, sub
      加 / 减
    3. push,pop
      入栈,出栈
    4. loop
      循环,和CX一起用
    5. and,or
      逻辑与,逻辑或
      (注:大小写转换很有用)

    3. 数据结构


    1. 先进后出,后进先出

    2. 数组

      可以用[bx + idata] 来实现

    4. 程序结构

    1. 伪指令
      segment
      ......
      ends

    2. assume
      假设某一段寄存器和程序中的某一个用segment...ends 定义的段相关联
      例如: assume cs : codesg

      一般要和cs联系起来。因为cs指向CPU执行方向

    3. end
      一个汇编程序的结束标记。

    4. 返回指令
      mov ax,4c00H
      int 21H
      这2条指令实现的功能就是程序返回

    5. 程序结构
      DS存储程序地址。
      然后会有一段程序段前缀(PSP)(Program segment prefix)256个字节
      DOS要用PSP用来加载程序进行通信

      然后才是程序段, 程序入口由CS指向

      所以有如下关系: DS + 10H = CS

    5. DOSBox

    1. 可以用 EDIT 来编辑,编辑后保存为asm文件
    2. 然后用MASM来编译,将asm文件编译为obj文件
    3. 再用LINK来连接, 将obj文件链接为exe可执行文件。
    4. 最后可以用DEBUG来对exe文件进行debug
  • 相关阅读:
    雷林鹏分享:Lua 运算符
    雷林鹏分享:PHP JSON
    不要提交代码到HEAD上
    Mr Cao 的提问
    使用masory
    git 下载单个文件 已经添加多个远程服务器
    自动生产jason的工具
    简单的应用可以用storyBoard
    《创业维艰》
    造成死锁的各种情况
  • 原文地址:https://www.cnblogs.com/orangestar/p/13409479.html
Copyright © 2011-2022 走看看