![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编
文章平均质量分 93
了不起的盖茨比。
如果把一切都准备好了再前行,那我们永远迈不出第一步。
展开
-
浅谈CPU和CPU对内存的访问方式
1.写在前面我上个月全在看汇编,导致博客好久没有更新了,但是看了《x86汇编-从实模式到保护模式》这书看起来比较吃力,我也看了好几篇也才了解的大概,凭我对这本书的简单的理解,于是今天这篇博客简单的介绍下CPU的体系结构,以及不同模式下,不同位数的CPU对内存的访问模式。2.16位CPU以及内存的访问的方式我们都知道,程序是一条条的指令,而CPU单次只能执行一条指令,而CPU又怎么知道每次要执行那条指令呢?于是聪明的人类想到了一个办法,就是用CPU中某一个寄存器去读取内存中的指令,读取一条执行一条,然后原创 2021-07-01 20:35:31 · 4740 阅读 · 2 评论 -
一篇文章带你搞定中断
1.写在前面我前面介绍了汇编的一些东西,但是这里我打算重新介绍一下中断,同时通过一个简单的汇编的程序来带你了解中断,同时也会简单的介绍这个的程序怎么一步步的写出来的,这儿我会从8086的CMOS中读取对应的事件,同时也会写一个除法溢出的内中断,来帮助的大家来理解的中断。2.本篇博客的概述3.中断是什么?中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。这里的意外的情况,就是中断信息。这就好比我们在打字原创 2021-06-07 16:20:01 · 251 阅读 · 0 评论 -
汇编中的直接定址表
po1.写在前面前面已经完全的介绍了CPU的中断,内中断,外中断,然后修改了一些内置的中断的程序。2.本篇博客的概述3.直接定址表3.1描述了单元长度的标号我们一直在代码段中使用标号来标记指令、数据、段的起始地址。比如,下面的程序将code段中的a标号处的8个数据累加,结果存储到b标号处的字中。assume cs:code code segment a:db 1,2,3,4,5,6,7,8 b:dw 0 start:mov si offset a mov b原创 2021-05-21 16:30:30 · 1014 阅读 · 0 评论 -
汇编中的外中断
1.写在前面前面的博客,我介绍了CPU中的内中断以及int指令,还有就是端口的读写,今天我们来介绍外中断。2.本篇博客的概述3.外中端CPU在计算机系统中,除了能够执行指令,进行运算以外,还应该能够对外部设备进行控制,接收它们的输入,向它们进行输出。也就是说,CPU除了有运算能力外,还要有I/O能力。我们平时在键盘上输入一个键盘的时候,屏幕上立即显示,可以知道这些都是及时处理的。显然需要解决两个问题:外设的输入随时可能发生,CPU如何得知?CPU从何处得到外设的输入?3.1接口芯片和端口外设原创 2021-05-20 15:35:22 · 539 阅读 · 0 评论 -
汇编中的int指令和端口
1.写在前面前面我介绍了内中断的一些知识,通过修改中断程序和中断向量表,来达到修改0号中断程序,使得除法溢出的时候,屏幕上打印overflow!今天我们来讲下int指令和端口。2.本篇博客的概述3.int指令3.1int指令int指令的格式为:int n, n为中断类型码,它的功能就是引发中断过程。CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下:取中断类型码n标志寄存器入栈,IF=0,TF=0;CS、IP入栈(IP)=(n4),CS=(n4+2)从此处转原创 2021-05-19 17:06:56 · 1973 阅读 · 0 评论 -
汇编中的内中断
1.写在前面上篇博客中,我简单的介绍了8086CPU中一些标志的寄存器,原来打算是上篇博客介绍内中断的,但是由于篇幅的原因,就留在这篇博客介绍了。2.本篇博客的概述3.内中断任何一个通用的CPU,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊信息,并且可以立即对所接收到的信息进行处理。这种特殊的信息,我们可以称为:中断信息。中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊信息。中断信息可以来自CPU的内部和外部,这原创 2021-05-18 17:22:45 · 513 阅读 · 0 评论 -
汇编中的标志寄存器
1.写在前面之前我的博客已经介绍了一些常用的寄存器,今天我打算介绍一下比较特殊的寄存器,标志寄存器,主要是用来的做一些比较的功能的,同时也会讲一下中断的一些知识。废话不多说,直接上博客吧。2.本篇博客的概述3.标志寄存器特殊的寄存器主要是下面的3种作用:用来存储相关指令的某些执行结果;用来为CPU执行相关指令提供行为依据用来控制CPU的相关工作方式。8986CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。这个特殊的寄存器(flag)的结构图如下:3.1ZF原创 2021-05-17 21:58:25 · 2108 阅读 · 0 评论 -
利用汇编写结构化的程序
1.写在前面上一篇博客,我大概介绍了一些高级的寻址方式,以及数据处理的一些问题,今天的博客,我主要带大家介绍一下,如何写出一些结构化的程序。在了解结构化的程序的之前,我们先来了解下转移指令吧。2.本篇博客的概述3.转移指令的原理可以修改IP,或同事修改CS和IP的指令统称为转移指令。转移行为可以分为以下的几类:只修改IP时,称为段内转移,比如:jmp ax同时修改CS和IP时,称为段间转移,比如:jmp 1000:0由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移短原创 2021-05-15 16:46:13 · 424 阅读 · 0 评论 -
汇编语言中更高级的寻址方式
1.写在前面我在前面的博客的介绍了汇编中的循环机制,同时也介绍了怎么在一个汇编的程序中定义多个段,循环的机制的就是读取cx中的值,cx寄存器中的值决定循环的次数,今天的博客主要介绍更加高级的寻址的方式。2.本篇博客的概述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pzWK8die-1620893249726)(/Users/king/Downloads/汇编语言 (2)].png)3.更灵活的定位内存地址的方法3.1and和or指令and指令:逻辑与指令,按位原创 2021-05-13 16:09:08 · 824 阅读 · 0 评论 -
带你用汇编写循序
1.写在前面上一篇博客,我已经简单的介绍汇编语言的一些常用的知识,同时也写了一个简单的程序。这篇博客,我会带着大家写一些循环的程序,废话不多说,直接开始。2.本篇博客的概述3.[BX]和loop指令3.1前置知识[bx]是什么呢?和[0]有些类似,[0]表示内存单元,它的偏移地址是0。要完整的描述一个内存单元,需要两种信息:内存单元的地址;内存单元的长度(类型) [BX]表示的意思就是偏移地址是BX寄存器中的值。为了描述上的简洁,在以后的博客中,我们将使用一个描述性的符号()来表示一个寄存器活原创 2021-05-08 16:47:30 · 299 阅读 · 2 评论 -
手写第一个汇编程序
1.写在前面我之前在看操作系统的书,但是看到第二章的时候,发现一大堆的汇编的语言,这个时候想死的心都是有的,大学的汇编课都是睡觉的,然后考试的还是刚刚及格过的,悔恨呀!然后大学的那本汇编的教材也不是很好,导致自己不太想学,现在想学操作系统,这门课又要重新捡起来了。这次我看的教材是《汇编语言》第三版-王爽。主要是参考这本书来学习的,博客也是用来记录,学到的一些知识。2.本篇博客的概述3.基础知识学习任何一门知识之前,我们都需要一些前置的知识,我们都知道汇编语言是直接在硬件之上工作的语言。我们首先要了原创 2021-05-07 11:37:55 · 862 阅读 · 0 评论