汇编寄存器总结
来源:互联网 发布:js设置left值 编辑:程序博客网 时间:2024/06/05 11:33
经常用到的寄存器有 cs, ds, ss, es, ax, bx, cx,dx, si, di, sp, bp, ip, psw。
- cs: ip 指定cpu 要读取指令的地址
- ss:sp 制定栈内存的地址
- ds 默认的段地址
- cx loop指令执行的时候进行2步操作(cx=cx -1 ; 判断cx的值)
汇编第三章:
* CPU 提供的栈机制(SS:SP指向栈顶元素)*
push ax 的执行, 由一下两步完成:
(1) sp=sp - 2
(2) 将ax的内容送入ss:sp指向的内存单元。
pop 的执行步骤:
(1) 从SS:SP指向的字单元中读取数据
(2) sp = sp + 2
汇编语言第八章:
第九章:
可以修改IP, 或同时修改CS和IP的指令统称为转移指令。(CS:IP cpu根据CS:IP指定的内存地址处开始执行)
- 段内转移:
- 段间转移:
转移指令分类:
- 无条件转移指令(如:jmp)
- 条件转移
- 循环指令(:loop)
- 过程
- 中断
9.1 offset(取标号的偏移地址)
s0: mov ax, offset s0
9.2 jmp 指令(功能: IP = IP + 8位位移(-128~127))
jmp short 标号(段内转移)
jmp short 标号 指令对应的机器指令,并没有包含具体的目的地址, 而是包含转移的位移, 这个位移是编译器根据
汇编中的标号计算出来的。
* jmp short label((功能: IP = IP + 8位位移(-32768~32767))): 段内近转移 *
start: mov ax, 0123H jmp short s0s0: mov bx, 1234H
* jmp near ptr label(功能: IP = IP + 16位位移):*
start: jmp near ptr ss: mov ax, 1111h
* jmp far ptr label() 段间转移 *
start: jmp far ptr s db 256 dup (0)s: mov ax, 1111h
* 转移地址在内存单元中 *
(1) jmp word ptr 内存单元地址(段内转移)
mov ax, 0123Hmov ds:[0], axjmp word ptr ds:[0]ormov ax, 0123Hmov [bx], axjmp word ptr [bx]
(2) jmp dword ptr 内存单元地址(段间转移)
* 功能: 从内存单元地址处开始存放着两个字, 高地址处的字是转移的目的段地址, 低地址处是转移的目的偏移的地址。 *
(CS) = (内存单元地址 + 2)
(IP) = (内存单元地址)
mov ax, 0123Hmov ds:[0], axmov word ptr ds:[2], 0jmp dword ptr ds:[0]ormov ax, 0123Hmov [bx], axmov word ptr [bx+2], 0jmp dword ptr [bx]
chapter 12 内中断
任何一个通用的CPU, 都具备一种能力, 可以在执行当前正在执行的指令后, 检测CPU外部发送过来的
或内部产生的中断信息, 并且立即对所接收的信息进行处理。
未完待续
- 汇编寄存器总结
- 汇编寄存器总结
- X86汇编 通用寄存器总结
- 汇编寄存器
- 汇编寄存器
- 汇编寄存器
- 汇编寄存器
- 汇编 寄存器
- 汇编-寄存器
- 影响CPSR状态寄存器的ARM汇编指令--总结
- 16位汇编寄存器和寻址方式总结
- 汇编中的寄存器说明
- 汇编寄存器基本指令
- 汇编标志寄存器
- 汇编--32寄存器大全
- 汇编中的寄存器说明
- Win32汇编 寄存器
- 汇编中的寄存器
- join()
- include/generated/autoconf.h
- uboot global_data
- 线程中的并发问题
- 压缩和解压
- 汇编寄存器总结
- 孤儿进程
- iOS10开发哪些坑
- 数组
- 学习linux相关命令
- nginx-lua 运行阶段
- CF
- Codeforces 675E Trains and Statistic【dp+线段树】好题!好题!
- 算法移植优化(一)android 学习笔记