![](https://img-blog.csdnimg.cn/20200721225436409.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
汇编语言
汇编语言学习笔记
Evil Fatman
这个作者很懒,什么都没留下…
展开
-
汇编语言读书笔记(12.内中断)
汇编语言(第三版,王爽)读书笔记内中断cpu都具备一种能力,检测到从cpu外部发送过来的或内部产生的一种特殊信息,并可以立即对所接受的信息进行处理。称其为中断信息,中断的意思就是,cpu不在接着向下执行,而是转去处理这个特殊信息。内中断的产生cpu内部有下面的情况发生的时候,将产生相应的中断信息:(1)除法错误,执行div指令产生的除法溢出(2)单步执行(3)执行int指令(4)执行into指令中断处理程序cpu收到中断信息后,应该转去执行该中断信息的处理程序。就要将cs:ip指向它的入原创 2020-08-11 14:58:28 · 287 阅读 · 1 评论 -
汇编语言读书笔记(11.标志寄存器)
汇编语言(第三版,王爽)读书笔记标志寄存器cpu内部寄存器中,有一种特殊的寄存器具有以下作用:用来储存相关指令的某些执行结果用来为cpu执行相关指令提供行为依据用来控制cpu的相关工作方式这些寄存器在8086cpu中被称为标志寄存器(flag)。标志寄存器有16位,其中储存的信息通常被称为程序状态字(PSW)标志寄存器按位起作用,每一位都有专门的含义1514131211109876543210OFDFIFTFSFZFA原创 2020-07-31 19:40:20 · 284 阅读 · 0 评论 -
汇编语言读书笔记(10.CALL和RET指令)
汇编语言(第三版,王爽)读书笔记CALL和RET指令ret和retfret指令用栈中的数据,修改ip的内容,从而实现近转移cpu执行ret时:(1)(ip)=((ss)* 16+(sp))(2)(sp)=(sp)+2retf指令用栈中的数据,修改cs和ip的内容,从而实现远转移cpu执行retf时:(1)(ip)=((ss))* 16+(sp))(2)(sp)=(sp)+2(3)(cs)=((ss)* 16+(sp))(4)(sp)=(sp)+2call指令cpu执行call原创 2020-07-31 13:38:26 · 233 阅读 · 1 评论 -
汇编语言读书笔记(9.转移指令的原理)
汇编语言(第三版,王爽)读书笔记转移指令的原理可以修改ip或cs和ip的指令统称为转移指令。操作符offset操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。例如mov ax,offset start就是将start的偏移地址赋给axjmp指令jmp为无条件转移指令,可以修改cs和ip或ip。jmp指令给出两种信息:转移的目的地址转移的距离(段间转移、段内短转移、段内近转移)依据位移进行转移的jmp指令jmp short 标号(转到标号处执行指令原创 2020-07-28 23:32:58 · 175 阅读 · 0 评论 -
汇编语言读书笔记(8.数据处理的两个基本问题)
汇编语言(第三版,王爽)读书笔记数据处理的两个基本问题reg表示一个寄存器,sreg表示一个段寄存器reg包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,disreg包括:ds,ss,cs,esbx、si、di、和bp在8086cpu中,只有着4个寄存器可以用在[…]中来进行内存单元寻址正确: mov ax,[bx+si] 错误:mov ax,[cx]在[…]中,这4个寄存器可以单个出现,或只能以4中组合出现:bx和s原创 2020-07-26 19:57:44 · 163 阅读 · 0 评论 -
汇编语言读书笔记(7.更灵活的定位内存地址的方法)
汇编语言(第三版,王爽)读书笔记更灵活的定位内存地址的方法and和or指令and指令:逻辑与,按位进行与运算 and al,00111011Bor指令:逻辑或,按位进行或运算 or al, 00100000B以字符形式给出的数据用'......'的方式指明数据是以字符的形式给出的,编译器将他们转化位ASCII码例如db 'unIX’相当于db 75h,6eh,49h,58h大小写转化问题小写字母的ASCII码减去20h就可以得到大写字母大写字母的ASCII码加上20h就可以得到小原创 2020-07-24 00:10:27 · 147 阅读 · 0 评论 -
汇编语言读书笔记(6.包含多个段的程序)
汇编语言(第三版,王爽)读书笔记包含多个段的程序在代码段中使用数据dw:即“define word”定义字型数据,存放在代码段中(CS)示例程序assume cs: codecode segmentdw 0123h, 0456h, 0789h, 0abch, 0defh, Ofedh, 0cbah,0987hstart : mov bx, 0 mov ax, 0 mov cx,8s: add ax,cs:[bx] add bx, 2 loo原创 2020-07-23 17:21:46 · 92 阅读 · 0 评论 -
汇编语言读书笔记(5.[BX]和loop指令)
[BX]和loop指令汇编语言中,以字母开头的数据前面要加0[BX][bx]表示内存单元,地址为ds:bxLoop指令cup执行loop指令时①cx=cx-1②判断cx中的值,不为0则跳转到标号处执行程序,为0则向下执行计算2^12 mov ax,2 mov cx,11s: add ax,ax loop s使用debug时,若要将循环一次性执行完,可以使用p命令,自动重复执行循环,也可使用g命令(g xxxx)直接执行到CS:xxxx处,而不是一次次使用t命令原创 2020-07-23 00:53:20 · 140 阅读 · 0 评论 -
汇编语言读书笔记(4.第一个程序)
汇编语言(第三版,王爽)读书笔记一个源程序从写出到执行的过程使用文本编辑器编写汇编源程序对源程序进行编译产生目标文件,再用连接程序对目标文件进行连接,生成可执行文件操作系统依据可执行文件中的描述信息,将机器码和数据载入内存,并进行初始化设置(如CS:IP的设置)可执行文件包括两部分:程序(翻译的机器码)和数据(源程序中定义的数据)相关的描述信息(程序占用内存空间等等)源程序一段简单的汇编语言源程序:assume cs: codesg codesg segmentmov ax,原创 2020-07-22 18:25:08 · 134 阅读 · 0 评论 -
汇编语言读书笔记(3.寄存器内存访问)
汇编语言(第三版,王爽)读书笔记寄存器(内存访问)内存中字的存储cup中,用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节内存单元是字节单元(一个单元存放一个字节)字单元:存放一个字型数据(16位)的内存单元起始地址为N的字单元简称N地址字单元DS和[address]1.DS寄存器通常用来存放要访问数据的段地址2.mov指令从一个内存单元送到一个寄存器中:mov 寄存器,内存单元地址偏移地址(8086cpu自动取ds中的数据为内存单元的段地址字的传送8086cpu原创 2020-07-21 22:52:38 · 150 阅读 · 0 评论 -
汇编语言读书笔记(2.寄存器)
汇编语言(第三版,王爽)读书笔记8086cpu的寄存器都是16位,向下兼容8位AX、BX、CX、DX寄存器可以分为AH和AL,BH和BL······8086cpu有20位地址总线,但只能处理16位的数据,因此采用2个16位地址合成一个20位的物理地址物理地址=段地址*16(段地址左移4位)+偏移地址物理地址=基础地址+偏移地址CS和IPCS为代码段寄存器,IP为指令指针寄存器(1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器(2)IP=IP+所读取指令的长度,从而原创 2020-07-21 00:36:19 · 114 阅读 · 0 评论