随笔分类 -  王爽汇编语言笔记

摘要:1.CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都有可能不同)具有以下3种作用。 (1)用来存储相关指令的某些执行结果;(2)用来为CPU执行相关指令提供行为依据;(3)用来控制CPU的相关工作方式。这种特殊的寄存器在8086CPU中,被称为标志寄存器.本章中的标志寄存器(以下简称flag)使我们学习的最后一个寄存器.2.flag寄存器是按位起作用的,也就是说,它的每一个位都有专门的含义,记录特定的信息.3.flag的1、3、5、12、13、14、15位在8086CPU中没有使用,不具有任何含义;0、2、4、6、7、8、9、10、11位都具有特殊的含义。4.flat的 阅读全文
posted @ 2013-01-11 15:36 烧点饭 阅读(799) 评论(0) 推荐(0) 编辑
摘要:1.call和ret指令都是转移指令,它们都修改IP的值,或同时修改CS和IP的值。它们经常共同用语实现子程序的设计。2.ret指令用栈中的数据,修改IP的内容,从而实现近转移。3.retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。4.CPU执行ret指令时,相当于进行: pop IP 执行retf指令时,相当于进行: pop IP pop CS5.CPU执行call指令时,进行两步操作: (1)将当前的IP或CS和IP压入栈中;(2)转移6.call指令不能实现短转移,call指令实现转移的方法和jmp指令的原理相同。7.call 标号(将当前的IP压栈后,转到标号处执行指令) 阅读全文
posted @ 2012-12-17 11:39 烧点饭 阅读(13795) 评论(0) 推荐(0) 编辑
摘要:1.可以修改IP,或同时修改CS和IP的指令统称转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。2.8086CPU的转移行为有以下几种: (1)只修改IP时,称为段内转移。例如:jmp ax (2)同时修改CS和IP时,成为段间转移。例如:jmp 1000:03.由于转移指令对IP值修改范围的不同,段内转移又分为:短转移和近转移。 (1)短转移IP的修改范围是-128~127 (2)近转移IP的修改范围是-32768~327674.8086CPU的转移指令分为以下几类: (1)无条件转移指令(如:jmp) (2)条件转移指令 (3)循环指令(如:Loop) (4)过程 阅读全文
posted @ 2012-12-11 12:51 烧点饭 阅读(2475) 评论(0) 推荐(0) 编辑
摘要:1.assume cs:code,ds:data,ss:stackdata segmentds 0123h,1234h,2345h,3456h,4567h,5678h,6789h,789Ahdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,axmov sp,20h;设置ss:sp指向stack的栈顶mov ax,datamov ds,ax;ds指向data段mov bx,0;ds:bx指向打他段中的第一个单元mov cx,8s: push [bx]add bx,2loo 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(148) 评论(0) 推荐(0) 编辑
摘要:1.and指令:逻辑与指令,按位进行与运算。与1不变,与0变0,可将对象相应位设为0.2.or指令:逻辑或指令,按为进行或运算。或1变1,或0变0,可将对象位设为1.3.[BX+idata]的几种表现形式:(1)mov ax,[200+bx](2)mov ax,200[bx](3)mov ax,[bx].2004.[BX+idata]的数组处理案例assume CS:codesg,DS:datasgdatasg SEGMENTDB 'BaSiC'DB 'MinIX'datasg ENDScodesg SEGMENTstart:MOV AX,datasgMOV D 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(220) 评论(0) 推荐(0) 编辑
摘要:1.两个基本问题:(1)处理的数据在什么地方?(2)处理的数据有多长?2.寄存器集合(Reg):ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si; 段寄存器集合(sReg):cs,ds,ss,es;3.几种错误的指令:(1)mov ax,[cx](2)mov ax,[dx](3)mov ax,[dx](4)mov ax,[ds](5)mov ax,[bp+bx](6)mov ax,[si+di]4.处理可分为:读取、运算、写入,在及其指令这一层来讲,它并不关心所要处理的数据是多少,而关心指令执行前的那一刻,它将要处理数据所在的位置。5.立即数:对于 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(362) 评论(0) 推荐(0) 编辑
摘要:1.Debug和MASN中读取内存单元的区别:Debug中:mov ax,0ffffhmov ds,axmov al,[1]MASN中:mov ax,0ffffhmov ds,axmov bx,1mov al,[bx]或者mov ax,0ffffhmov ds,axmov al,ds:[1]2.Loop指令assume cs:codecode sementmov ax,2mov cx,3s: add ax,axloop scode ednsend 其中s为loop的标号,代表一个地址,它标识了一个地址,该表示可以随意命名,要与loop XX 相同即可;cx为循环次数,当执行loop s时,cx 阅读全文
posted @ 2012-12-10 14:58 烧点饭 阅读(373) 评论(0) 推荐(0) 编辑
摘要:一个典型的CPU使用运算器、控制器、寄存器等组成的。8086CPU有14个寄存器,AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,其中有8个是通用寄存器。8086CPU所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX通常用来存放一般性数据被成为通用寄存器。8086CPU为了兼容上一代的8位CPU,AX、BX、CX、DX这四个可以分为两个独立的8位寄存器。比如AH(高位)和AL(低位)。1字=2字节=16位(1Word=2Byte=16bit)。CPU访问内存时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(1050) 评论(0) 推荐(0) 编辑
摘要:CPU中,用16位来存储一个字。高8位存放高位字节,低8位存放低位字节。内存存储中,内存单元是字节单元(1单元=1字节),则一个字要用两个地址连续的内存单元存放。内存存储中,高位字节,和低位字节是相对的,指令指向的是低位字节。字单元,即存放一个字型数据(16位=2字节)的内存单元,由两个地址连续的内存单元组成。8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。MOV指令的几种种功能:将数据直接送入寄存器 mov ax,1000H将一个寄存器中的内容送入另一个寄存器 mov ax,bx;mov ds,ax将一个内存单元中的内容送入寄存器 mov ax,[...]将寄存器中的内容送 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(577) 评论(0) 推荐(0) 编辑
摘要:1.一个最简单的汇编语言源程序:assume cs:codesgcodesg segmentmov ax,0123Hmov bx,0456Hadd ax,bxadd ax,axmov ax,4c00Hint 21Hcodesg endsend2.assume是“假设”的意思,它是将有特定用途的段和相关段寄存器关联起来的。3.sgment和ends是一对成对使用的伪指令,也是一边必须用到的伪指令,xxxx segment用来声明该段的名称,中间则是存放汇编指令。4.end是一个汇编程序的结束标记。5.一个有意义的汇编程序必须有一个代码段。6.一个程序结束后,会将CPU的控制权交还给使他运行的程序 阅读全文
posted @ 2012-12-10 14:57 烧点饭 阅读(220) 评论(0) 推荐(0) 编辑
摘要:1.汇编语言有三类指令组成汇编指令:有对应机器码伪指令:没有对应机器码,有编译器执行其他符号:如+,-,*,/,由编译器识别汇编语言的核心是汇编指令,它决定了汇编语言的特性。2.一个内存单元=1Byte=8bit。3.CPU要进行读写(外部通讯)需要进行以下三个交互地址总线数据总线控制总线4.CPU是通过地址总线来指定存储单元的。5.一个CPU有N根地址总线,则可以说这个CPU的地址总线宽度为N,这样的CPU可以寻找到2的N方个内存单元。6.CPU与内存或其他部件之间的数据传送是通过数据总线来进行的。7.数据总线决定了CPU与外界数据传输的速度。8.8根数据总线可以传送一个8位二进制数据(即一 阅读全文
posted @ 2012-12-10 14:56 烧点饭 阅读(272) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示