![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言(第四版)王爽
文章平均质量分 77
三元湖有大锦鲤
我吃吃吃。
展开
-
《汇编语言(第四版)》王爽 第十一章 标志寄存器
CPU内部有一个存放程序状态字(PSW)的信息的寄存器,叫做标志寄存器(flag寄存器)。它用来存储相关指令的某些执行结果;为CPU执行相关指令提供行为依据;用来控制CPU的相关工作方式。8086CPU的flag寄存器是按位起作用的,每一位都有专门的含义,记录特定的信息。8086CPU的结构:11:OF;10:DF;9:IF;8:TF;7:SF;6:ZF;4:AF;2:PF;0:CF。Flag 的1、3、5、12、13、14、15位在8086CPU没有使用,不具有任何含义。ZF在flag 的第六位,是零标原创 2022-06-14 19:38:17 · 371 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第十章 CALL和RET指令
call和ret指令都是转移指令,它们都修改IP,或者同时修改CS和IP。它们经常被用作实现子程序的设计。ret指令用栈中的数据,修改IP的内容,实现近转移。retf指令用栈中的数据,修改CS和IP的内容,实现远转移。CPU在执行ret指令时,进行两步操作:相当于:CPU在执行retf指令时,进行四步操作:相当于:例如这个程序,ret语句执行后,(IP)=0,CS:IP指向代码第一条指令。CPU执行call指令时,进行两部操作:call不能实现短转移。call 标号:将当前的IP压栈后,转到标号处执原创 2022-06-13 15:38:33 · 609 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第九章 转移指令的原理
可以修改IP或同时修改CS和IP的指令统称为转移指令。8086的转移行为有以下几类:由于转移指令对IP的修改范围不同,段内转移又分为:8086CPU的转移指令分为以下几类:操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。jmp为无条件转移指令,可以修改IP或同时修改CS和IP。jmp指令要给出的两种信息:jmp short 标号(转到标号处执行指令):这种格式的jmp指令实现的是段内短转移,它对IP的修改范围为-128~127。CPU在执行jmp指令的时候并不需要转移的目的原创 2022-06-11 20:34:47 · 304 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第八章 数据处理的两个基本问题
数据处理的两个基本问题:绝大部分机器指令都是进行数据处理的指令,大致可以分为三类:读取、写入、运算。指令在执行前,所要处理的数据可以在三个地方:CPU内部、内存、端口。汇编语言中用3个概念表达数据的位置:给定一个内存单元的偏移地址的方法叫做寻址方式。8086CPU的指令可以处理两种尺寸的数据,byte和word。所以机器指令要指明,指令进行的是子操作还是字节操作,对于这个问题,汇编语言这样处理:一般来说,**[bx+idata+si]**的方式可以访问结构体中的数据。用bx定位整个结构体、用idata定位结原创 2022-06-08 10:55:06 · 286 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第七章 更灵活的定位内存地址的方法
7.1 and和or指令and指令:逻辑与指令,按位进行与运算。通过该指令可以将操作对象的相应位设为0,其他位不变。or指令:逻辑或指令,按位进行或运算。通过该指令可以将操作对象的相应位设为1,其他位不变。7.2 关于ASCLL码计算机中的信息都是二进制,我们要把信息存储在计算机中,就需要对信息进行编码,将其转化为二进制信息进行存储,而计算机要将这些存储的信息再显示给我们看,就要对其进行解码。而ASCLL码就是编码的一种方式。7.3 以字符形式给出的数据我们可以在程序代码中使用**‘…’的方式指原创 2022-05-25 17:36:54 · 486 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第六章 包含多个段的程序
6.1 在代码段中使用数据我们来看一个程序:assume cs:codecode segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart: mov bx, 0 mov ax, 0 mov cx, 8s: add ax, cs:[bx] add bx, 2 loop s mov ax, 4c00h int 21hcode endsend start代码中的dw的含义是定义字符数据。dw即def原创 2022-05-25 17:33:44 · 280 阅读 · 2 评论 -
《汇编语言(第四版)》王爽 第五章 [BX]和loop指令
[BX]代表什么?我们先看一下这两个语句:mov ax, [0]:意思是将一个内存单元的内容送入ax里,这个内存单元的长度为2字节,存放一个字,偏移地址是0,段地址在ds中。mov al, [0]:意思是将一个内存单元的内容送入ax里,这个内存单元的长度为1字节,存放一个字节,偏移地址是0,段地址在ds中。由此可见,要完整的描述一个内存单元,需要两种信息:(1)内存单元的地址。(2)内存单元的长度。因此,**[bx]**是一个内存单元,它的偏移地址在bx中,段地址在ds中,具体大小看具体情况原创 2022-05-09 21:45:00 · 925 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第四章 第一个程序 笔记
4.1 一个源程序从写出到执行的过程一个源程序从写出到执行的过程:(1)编写汇编源程序:使用文本编译器,用汇编语言编写汇编源程序,产生一个存储源程序的文本文件。(2)对源程序进行编译连接:使用汇编语言的编译程序对源程序文件中的源程序进行编译,产生目标文件,再用连接程序对目标文件进行连接,生成可执行文件。(3)执行可执行文件中的程序:操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化,然后由CPU执行程序。4.2 源程序例如以下的代码,我们称作汇编源原创 2022-04-10 12:10:07 · 325 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第三章 寄存器(内存访问) 笔记
第三章 寄存器(内存访问)3.1 内存中字的存储内存中的字是如何存储的呢?这里举一个例子:CPU中使用16位寄存器存储一个字单元,其中高八位存放高位字节,低八位存放低位字节。我们拿0—3一共四个内存空间存放数据20000(4E20H)和18(0012H),存储格式是这样的:0:20H1:4EH2:12H3:00H3.2 DS和[address]8086CPU中的DS寄存器存放要访问数据的段地址。要将10000H单元的数据读到al中:Mov bx, 1000HMov ds,原创 2022-04-04 17:15:58 · 822 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第二章 寄存器 笔记
第二章 寄存器CPU中:运算器:进行信息处理寄存器:进行信息存储控制器:控制各种器件进行工作内部总线:连接各种器件,进行数据的传送对于程序员来说,CPU中的寄存器无比重要,程序员通过改变各种寄存器中的内容实现对CPU的控制。8086CPU有14个寄存器,分别是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。2.1 通用寄存器8086CPU所有寄存器都是16位的,可以存放两个字节。其中AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被原创 2022-03-31 09:11:38 · 437 阅读 · 0 评论 -
《汇编语言(第四版)》王爽 第一章 基础知识 笔记
第一章 基础知识由于汇编语言是直接作用在硬件上的编程语言,所以,要使用汇编语言,我们要先对计算机硬件有深入的了解。1.1 机器语言机器语言:机器指令的集合。机器指令:一台机器可以正确执行的命令。电子计算机的机器指令是一串二进制数字,计算机内部使用高低电平表示,这些指令在CPU中进行,CPU有自己的机器指令集,就叫做机器语言。机器语言难以人们阅读和书写,很难写出复杂的代码,易于出错,难以记忆。当一个语言的弊端保留的时候,新的事物将会带来一场变革,于是汇编语言出现了。1.2 汇编语言的产生汇编语原创 2022-03-28 12:31:42 · 1031 阅读 · 0 评论