![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编语言
汇编语言学习
列奥尼达斯Leonidas
【汇编语言】【王爽】【第4版】【清华大学出版社】
展开
-
【汇编语言】【笔记】内中断
内中断中断信息:CPU不再接着向下执行,而是转去处理这个特殊信息内中断的产生CPU内部有下面的情况发生时,将产生相应中断信息除法错误单步执行执行into指令执行int指令8086CPU用称为中断类型码的数据表示中断信息来源除法错误:0单步执行:1执行into指令:4执行int指令,指令格式为int n,指令中的n为字节型立即数,是提供给CPU的中断类型码中断处理程序用来处理中断信息的程序称为中断处理程序一般来说,需要针对不同的中断信心编写不同的处理程序中断类型码的作原创 2020-12-02 19:18:27 · 109 阅读 · 0 评论 -
【汇编语言】【笔记】标志寄存器
标志寄存器CPU内部有一种特殊寄存器,称为标志寄存器,有以下功能:存储相关指令的某些执行结果为CPU执行相关指令提供行为依据控制CPU的相关工作方式标志寄存器称为flag寄存器,为16位寄存器,存储的信息称为程序状态字flag寄存器按位起作用第0位 CF第2位 PF第6位 ZF第7位 SF第8位 TF第9位 IF第10位 Df第11位 OF影响flag寄存器的指令大多数为运算指令ZF标志flag寄存器第6位是ZF,为零标志位功能:记录相关指令执行后,其结果是否原创 2020-12-02 16:06:19 · 262 阅读 · 0 评论 -
【汇编语言】【笔记】CALL与RET指令
CALL和RET指令ret和retfret指令用栈中的数据,修改IP的内容,实现近转移相当于pop IPretf指令用栈中的数据,修改CS和IP中的内容,实现远转移相当于pop IP ; pop CScall指令call 标号功能:将IP压入栈中后转移到标号处相当于push IPjmp near ptr 标号call far ptr 标号功能:将CS和IP压入栈中后转移到标号处相当于push CSpush IPjmp far ptr 标号call 16位原创 2020-12-01 20:29:51 · 129 阅读 · 0 评论 -
【汇编语言】【笔记】转移指令的原理
转移指令的原理转移指令:可以修改IP,或同时修改CS和IP的指令统称为转移指令。即可以控制CPU执行内存中某处代码的指令8086CPU的转移行为有以下分类段内转移:只修改IP中的内容段间转移:同时修改CS和IP中的内容段内转移可以分为短转移:IP的修改范围为-128~127近转移:IP的修改范围为-32768~32767操作符offset功能:取得标号的偏移地址例如:mov ax,offset start即将start标号的偏移地址送入ax中jmp指令依据位移进行的j原创 2020-12-01 14:18:03 · 157 阅读 · 0 评论 -
【汇编语言】【笔记】数据处理的两个基本问题
数据处理的两个基本问题处理的数据在什么地方处理的数据有多长定义描述性符号reg和sregreg表示一个寄存器sreg表示一个段寄存器BX、SI、DI和BP8086CPU中只有标题四个寄存器可以用在[...]中来进行内存单元的寻址bx与bp类似,可以与SI和DI组合运用使用[bp+si+idata]时,若段地址没有显式给出,则默认在ss段寄存器中注意:[bx+si+idata]的段地址默认在ds段寄存器中机器指令处理的数据在什么地方三个地方:CPU内部,内存,端口汇编语原创 2020-11-29 15:17:13 · 256 阅读 · 0 评论 -
【汇编语言】【笔记】更灵活的定位内存地址的方法
更加灵活的定位内存地址的方法and和or命令and指令:逻辑与指令,按位进行与运算Ex:mov al,01100011B and al,00111011B(al) = 00100011B上第一位为0,下第一为0,0和0做与运算得0上第三位为1,下第三位为1,1和1做与运算得1上第四位为1,下第四位为0,1和0做与运算得08位全部运算后得到新的数据or指令:逻辑或指令,按位进行或运算运算过程与and指令运算过程类似以字符形式给出的数据以'......'的方式给出的数据是以字符的原创 2020-11-26 22:53:39 · 214 阅读 · 0 评论 -
【汇编语言】【笔记】包含多个段的程序
包含多个段的程序在代码段中使用数据问题:编程计算以下8个数据的和,结果存在ax寄存器中:0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hassume 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原创 2020-11-26 14:23:23 · 171 阅读 · 0 评论 -
【汇编语言】【笔记】[BX]和loop指令
[BX]和loop指令符号( )表示一个寄存器或一个内存单元中的内容Ex:(ax)表示ax中的数据内容idata表示常量[bx]mov ax,[bx]功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认存放在ds中,将SA:EA处的数据送入ax中即(ax) = ( (ds) * 16 + (bx) )inc bx功能:bx中的内容加1loop指令loop指令的格式为:loop 标号CPU执行loop指令时,进行两步操作:(cx) = (cx) - 1判断cx中的值原创 2020-11-26 10:07:42 · 445 阅读 · 0 评论 -
【汇编语言】【笔记】第一个程序
第一个程序源程序程序 4.1assume cs:codecode segment mov ax,0123H mov bx,0456h add ax,bx add ax,ax mov ax,4c00H int 21Hcode endsend 1.伪指令伪指令是由编译器执行的指令程序4.1中出现的伪指令有code segment···code endssegment和ends是一对成对使用的伪指令,功能是定义一个段,segment说明一个段开原创 2020-11-26 08:48:43 · 218 阅读 · 0 评论 -
【汇编语言】【笔记】寄存器(内存访问)
寄存器(内存访问)内存中字的存储CPU中,用16位寄存器存储一个字,高8位存放高位字节,低8位存放低位字节内存单元是字节单元,即一个字要用两个地址连续的内存单元存放字单元:即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单员组成。高地址内存单元存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节起始地址为N的字单元简称为N地址字单元DS和[address]8086CPU中,DS寄存器通常用来存放要访问的数据的段地址mov指令可将一个内存单元中的内容送入一个寄存器原创 2020-11-21 16:48:55 · 840 阅读 · 1 评论 -
【汇编语言】【实验1】查看CPU和内存,用机器指令和汇编指令编程
Debug功能R命令:查看,改变CPU寄存器的内容D命令: 查看内存的内容E命令:改写内存中内容U命令:将内存中的机器指令翻译成汇编指令T命令:执行一条机器指令A命令:以汇编指令的格式在内存...原创 2020-11-21 15:43:41 · 150 阅读 · 0 评论 -
【汇编语言】【笔记】寄存器
寄存器一个典型的CPU由运算器、控制器、寄存器等器件构成,器件内部靠总线相连运算器进行信息处理寄存器进行信息存储控制器控制各种器件进行工作内部总线连接各种器件,在它们之间进行数据的传送程序员通过改变各种 寄存器 中的内容实现对CPU的控制通用寄存器8086CPU的所有寄存器都是16位的,可以存放两个字节AX、BX、CX、DX四个寄存器通常用来存放一般性数据,被称为通用寄存器16位寄存器能存储的数据最大值(无符号)为1111111111111111,即655354个寄存器都可分原创 2020-11-18 19:57:15 · 646 阅读 · 0 评论 -
【汇编语言】【笔记】基础知识
基础知识汇编语言的组成汇编指令伪指令其他符号汇编语言的核心是 汇编指令存储器指令与数据在存储器中存放,即内存指令与数据指令与数据在内存与磁盘中都是 二进制信息,在应用时体现区别存储单元电子计算机的最小信息是 bit 即一个二进制位8 bit = 1 Byte(字节)CPU对存储器的读写CPU对数据进行读写时,与芯片进行三类信息交互地址信息:存储单元的地址控制信息:芯片的选择,读写命令数据信息:读或写的数据计算机中专门连接CPU与其他芯片的导线,称为总线,根据所需原创 2020-11-18 18:37:20 · 140 阅读 · 0 评论