
汇编语言
、moddemod
这个作者很懒,什么都没留下…
展开
-
控制寄存器
IA-32CPU设计了5个控制寄存器CR0-CR4,用来决定CPU的操作模式以及当前任务的关键特征。CR0PE位是启用保护模式的标志 1 保护模式 0 实模式PG位是开启分页机制的标志WP位是写保护标志,当该位设置时,特权级程序在面对只读的物理页时,是不能写的,只可以读;如果没有该位,则特权程序随意读写。CR2当有程序访问到某些不在物理内存中的页对应的内存地址时,CPU便会产生一个页错误异常(缺页异常),此时就会所缺的内存地址的线性地址便会存储到CR2寄存器中,后续CPU会原创 2020-09-08 18:36:39 · 851 阅读 · 0 评论 -
win10下8086CPU汇编Debug实验环境搭建
windowsDosboxDOSBox是一个模拟器,可重新创建与MS-DOS兼容的环境。https://www.dosbox.com/debuglinkmasm下面附上上面工具打包的链接!百度云链接:https://pan.baidu.com/s/1dBZlV4IKJjmNxl4UxOsecw 提取码:5myn蓝奏云https://wws.lanzous.com/iQjXmgbke7i之后直接双击安装完dosbox后,启动可以看到dosbox启动的加载的配置文件,如下图原创 2020-09-03 16:54:31 · 1082 阅读 · 1 评论 -
你真的了解段寄存器吗?
段寄存器通常有CS DS SS ES,80386后引入了2个额外的段寄存器FS与GS。大量的书籍上,都描述了段寄存器是16位的,这是一种非常不严谨的说法!这些段寄存器除了有16位的可见部分,还有不可见的隐藏部分,称为描述符缓存“descriptor cache”或隐藏寄存器“shadow register”[1]。当一个段选择符(segment selector)装入段寄存器的可见部分,处理器同时也把该段描述符的其它数据装入到段寄存器的隐藏部分,这包括段开始的基地址、段长度、访问控制信息等。这些信息缓原创 2020-09-01 10:59:52 · 2282 阅读 · 0 评论 -
在线反汇编代码网站
https://godbolt.org/下面是一个在线运行汇编代码的网站https://www.tutorialspoint.com/compile_assembly_online.php原创 2020-03-27 22:24:00 · 32916 阅读 · 0 评论 -
x86汇编指令集大全
X86和X87汇编指令大全(有注释) ---------- 一、数据传输指令 ---------------------------------------------------- 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX ...转载 2020-03-16 10:33:30 · 990 阅读 · 0 评论 -
标志寄存器(PSW)
标志寄存器标志寄存器又称程序状态字PSW(Program Status Word)标志Flag用于反映指令执行结果或控制指令的执行形式。许多指令执行后将影响有关的状态标志寄存器,不少指令的执行要利用某些标志,当然,也有很多指令与标志无关。处理器中用一个或多个二进制位表示一种标志,其0和1的不同组合表示标志的不同状态。Intel8086支持的标志形成了一个16位的标志寄存器FLAGS。以后各带...原创 2020-03-09 22:57:41 · 28425 阅读 · 0 评论 -
反汇编分析之函数调用
反汇编分析一个简单的c语言程序,主要是理解一下函数调用堆栈空间的分配// test.cint g(int x){ return x + 3;}int f(int x){ return g(x);}int main(void){ return f(8) + 1;}汇编后得到AT&T格式的汇编代码gcc -m32 -S -o test.s...原创 2020-03-01 21:26:18 · 617 阅读 · 0 评论 -
gccAT&T格式汇编,内联汇编
Linux下默认是AT&T格式的汇编汇编语言直接同计算机硬件交互,下面是汇编语言的优点:能够直接访问硬件相关的存储器或或IO端口能够不受编译器的限制,对生成的二进制代码进行完全的控制能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁能够根据特定的应用对代码做最佳的优化,提高运行速度能够最大限度地发挥硬件的功能寄存器名要加上%作为前缀,$前缀表示一...原创 2020-03-01 19:35:34 · 370 阅读 · 0 评论 -
汇编语言程序格式
不同的汇编程序由不同的汇编语言编程规定。目前支持Intel 8086/8088系列微机,常用的汇编程序有ASM、MASM、TASM、OPTASM等。汇编语言语句种类及其格式汇编语言的语句可以分为指令语句和伪指令语句指令语句每一条指令语句在汇编时都要产生一个可供cpu执行的机器目标代码,它又叫可执行语句。指令语句的一般格式为:标号: 指令助记符 操作数; 注释标号是可选字段,它后面必须...原创 2020-02-11 13:59:15 · 2025 阅读 · 0 评论 -
指令编码
汇编:将汇编语言程序转换成机器语言程序的过程汇编程序:在计算机中实现汇编过程的系统程序Intel8086/8088汇编指令的编码格式有四种基本格式双操作数指令编码格式单操作数指令编码格式与ax或al有关的指令编码格式其他指令编码格式操作特征 寻址特征 位移量 立即数整个指令编码可以包含4个部分,但其中某些部分在一些指令的编码中可以没有。操作特征部分这部分为指令编码的首字节,它又...原创 2020-02-10 16:11:22 · 3117 阅读 · 0 评论 -
指令系统
指令系统指令格式指令和指令系统是计算机中最基本的概念。指令是指示计算机执行某些操作的命令,一台计算机的所有指令的集合构成该机器的指令系统,也称为指令集。一条指令就是机器语言的一个语句,它是一组有意义的二进制数据,指令的基本格式是操作码字段 地址码字段操作码指明了指令的操作性质及功能,地址码则给出了操作数的地址指令长度是指一条指令中所包含的二进制代码的位数,它取决于操作码字段的长度、操作数地址的个数及长度。寻址技术寻址指的是寻找操作数的地址或下一条将要执行的指令地址。在计算机中需要编址的设备原创 2020-02-10 16:10:13 · 494 阅读 · 0 评论 -
Linux嵌入式汇编语言
基本格式如下:asm("汇编语句" : 输出寄存器 : 输入寄存器 : 会被修改的寄存器) 汇编语句是写汇编指令的地方,输出寄存器表示当这段嵌入汇编语句之后,哪些寄存器用于存放输出数据.这些寄存器会分别对应一个C语言表达式或一个内存地址,输入寄存器表示在开始执行汇编代码时,这里指定的一些寄存器中应存放的输入值,它们分别对应着一个C变量或常数值....原创 2020-01-23 18:11:08 · 506 阅读 · 0 评论 -
内存管理
内存管理CPU通过对内部存储器的管理实现任务切换和资源调配。早期的16位CPU通过分段方式实现对内存的管理,32位CPU采用分段和分页结合的方式实现对内存的管理。实模式下分段管理8086/80386CPU有20位地址总线,最大可寻址内存空间为2的20次方为1MB,其物理地址范围为00000H~FFFFFH。而8086CPU寄存器都是16位的,其表示范围是0~2的16次方-1,即0000H~F...原创 2019-11-27 00:37:50 · 309 阅读 · 0 评论 -
CPU工作模式
CPU工作模式在保护模式下,CPU可寻址4GB甚至更多的物理地址空间,支持存储器分段管理机制和分页管理机制,支持多任务,如果操作CPU不支持这些特性,那么操作系统不可能实现虚拟内存、内核/用户模式、多任务等特性。从80386开始,32位CPU具有三种运行行模式:实模式、保护模式和虚拟8086模式。实模式CPU被复位(加电)时,自动进入实模式。在实模式下,这些CPU就相当于高性能的8086,...原创 2019-11-25 10:48:56 · 861 阅读 · 0 评论 -
子程序设计
设计良好的子程序,如果其中要用到寄存器,则应在开头保存它将要用到的寄存器内容,而在返回前恢复它们,以保证调用程序的寄存器内容不被破坏。通常用PUSH保存,使用POP指令恢复。保持堆栈平衡在含有子程序的汇编语言程序设计中,要特别注意保持堆栈平衡,密切注意堆栈的变化,这包括要注意一切与堆栈有关的操作。例如,要注意CALL调用类型和子程序定义类型的一致性、PUSH和POP指令的匹配、通过堆栈传递参数...原创 2019-11-04 09:36:35 · 447 阅读 · 0 评论 -
保护模式下的寄存器
80386新增了一系列寄存器用于支持CPU工作于保护模式下,除了控制寄存器组有一些新增加的特性和变化外,其他更高级的处理器与80386微处理器本质上相同。控制寄存器80386中四个系统控制寄存器:CR0~CR3(Control Register),CR0的低5位是系统控制标志,被称为机器状态字(Machine Status Word,MSW),分页机制中用到CR3、CR2和CR0。PG(...原创 2019-11-01 11:43:13 · 1416 阅读 · 0 评论 -
门
门门(Gate)可以看作一种转换机构,可以实现不同特权级别之间的控制传送。门的类型有4种:调用门、任务门、中断门、陷阱门。其中调用门用于控制传送,改变任务或者程序的特权级别;任务门像个开关,用来执行任务切换;中断门和陷阱门用来指出中断服务的入口地址。系统描述符门描述符属于系统描述符,系统描述符也是8字节64位,其中S位用来区分系统描述符和段描述符,S=0表示系统描述符,S=1表示段描述符。...原创 2019-11-01 10:31:29 · 195 阅读 · 0 评论 -
masm32汇编基础
写在前面的话笔者机器环境:Win10 + VS2017环境配置参考:https://moddemod.blog.youkuaiyun.com/article/details/102858284.386.model flat, stdcalloption casemap:noneMessageBoxA PROTO :dword, :dword, :dword, :dwordMessageBox equ <MessageBoxA>Includelib user32.libNULL equ原创 2019-10-31 23:52:51 · 1085 阅读 · 0 评论