汇编
路漫漫其修远兮?
会当凌绝顶,一览众山小
展开
-
MIPS指令表示之指令格式
一、指令格式1、R格式中各字段数值的含义例:add $8,$9,$10想要把它表示位字的形式,则根据字段的划分,每个字段的值分别如下:opcode=0 (参见附录) funct=32(参见附录) rd=8(目的)rs=9(首操作数) rt=10(次操作数) shamt=0(非位移)则字段的十进制数表示为:转化成二进制表示为:为什么R格式由两个6位字段来确定命令,而不是一个12位字段?答:为了尽量与其他格式兼容,同时让立即数字段由更大的存...原创 2021-05-20 20:33:18 · 5974 阅读 · 3 评论 -
MIPS汇编总结
一、汇编指令1.为了简化处理器的设计,MIPS处理器采用了固定结构的汇编指令:每个指令由4个部分组成:1个操作符+3个操作数 指令格式:指令代码 操作数1,操作数2,操作数32.在汇编指令中,寄存器没有数据类型,由运算符确定将寄存器的内容当作什么数据来处理3.MIPS既提供了检测溢出的加(add)、减(sub)指令,也停供了不检测溢出的加(addu)、减(subu)指令以适用不同高级语言的需求二、寄存器1.为了是使硬件设计更简单,MIPS处理器的汇编语言中,算术...原创 2021-05-06 16:51:16 · 7943 阅读 · 5 评论 -
寄存器(内存访问)
一、内存中字的存储1、字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成2、高地址内存单元存放字型数据的高位字节,低地址内存单元存放字型数据的地位字节3、任何两个连续的内存单元,N号单元和N+1号单元,可以将它们看成是两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元二、DS和[address]1、8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址2、8086CPU不支持将数据直接送入段寄存器的操作,只能用寄存器来进行中转三、数原创 2021-01-18 21:03:13 · 319 阅读 · 0 评论 -
用位运算进行大小写字母转换
用位运算进行大小写字母转换就ASCLL码的二进制形式来看,除第5位(位数从0开始计算)外,大写字母和小写字母的其它各位都一样。大写字母ASCII码的第五位为0,小写字母的第5位为1.因此,一个字母,不管它原来是大写字母还是小写字母,将它的第5位置0,它就必然变成大写字母;将它的第五位置1,则它必然变成小写字母汇编语言:...原创 2021-02-05 16:15:21 · 2496 阅读 · 6 评论 -
and和or指令
and和or指令一、and指令:逻辑与指令,按位进行与运算例如指令:mov al,01100011Band al,00111011B执行后:al=00100011B通过该指令可将操作对象的相应位设为0,其他位不变例如:将al的第六位设为0的指令是:and al,10111111B二、or指令:逻辑或指令,按位进行或运算例如指令:ov al,01100011Bor al,00111011B执行后:al=01111011B通过指令可将操作对象的相应位.原创 2021-02-05 11:23:17 · 8353 阅读 · 0 评论 -
debug和汇编编译器masm对指令不同的处理
debug和汇编编译器masm对指令不同的处理1、在汇编源程序中,如果用指令访问一个内存单元,则在指令中必须用[...]来表示内存单元。如果在[ ]里用一个常量idata直接给出内存单元的偏移地址,就要在[ ]前面显式的给出段地址所在的寄存器比如 mov al,ds:[0]如果没有在[ ]的前面显式的给出段地址所在的段寄存器比如 mov al,[0]那么,编译器masm将把指令中的[idata]解释为idata2、如果在[ ]里用寄存器如bx,间接给出内存单元的偏移...原创 2021-01-28 20:34:10 · 323 阅读 · 0 评论 -
LOOP指令
LOOP指令1、Loop指令的格式: loop 标号2、CPU执行loop指令时,要进行两步操作①(cx)=(cx)-1②判断cx中的值,不为0则转至标号处执行程序,如果为0则向下继续执行3、通常用loop指令来实现循环功能,cx中存放循环次数4、大于9FFFH的十六进制数据A000H、A001H...FFFEH、FFFH等,在书写的时候都是以字母开头的。而在汇编程序中数据不能以字母开头,所以要在前面加0...原创 2021-01-28 20:21:33 · 31481 阅读 · 0 评论 -
定义的描述性符号:()
我们定义的描述性符号:()定义:使用( )来表示一个寄存器或内存单元中的内容()中的元素可以有三种类型:①寄存器名②段寄存器名③内存单元的物理地址(一个20位数据)原创 2021-01-28 20:15:25 · 344 阅读 · 0 评论 -
[BX]和内存单元的描述
[BX]和内存单元的描述1、要完整的描述一个内存单元,需要两种信息①内存单元的地址②内存单元的长度2、用[0]表示一个内存单元时,0表示单元的偏移地址,段地址默认在DS中3、[BX]同样也表示一个内存单元,它的偏移地址在bx中例、mov ax,[bx]将一个内存单元的内容送入ax,这个内存单元的长度为2字节,存放一个字,偏移地址在bx中,段地址在ds中...原创 2021-01-28 20:10:44 · 591 阅读 · 1 评论 -
汇编源程序
源程序一、伪指令定义:在汇编语言源程序中,包含两种指令,一种是汇编指令,一种是伪指令汇编指令:被编译为机器指令后被CPU执行伪指令:由编译器来执行二、segment和ends定义:segment和ends是一对成对使用的伪指令,这是在可被编译器编译的汇编程序时必须要使用到的一对伪指令①:segment和ends的功能是定义一个段,segment说明一个段的开始,ends说明一个段的结束②:一个段必须有一个名称来标识,使用格式为: 段名 sege...原创 2021-01-25 18:14:45 · 1550 阅读 · 0 评论 -
一个汇编程序从写出到执行的过程
一个程序从写出到执行的过程第一步:编写程序使用文本编辑器(任何文本编辑器都可,只需将文件后缀改为.asm),用汇编语言编写源程序(文件格式为XX.asm)第二步:对源程序进行编译连接①使用汇编编译程序(masm.exe)对源文件中的源程序进行编译,产生目标文件(文件格式为XX.obj)②再用连接程序(link.exe)对目标文件进行连接,生成可执行文件(XX.exe)强行插入:可执行文件包含两部分内容:①程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的.原创 2021-01-22 22:13:52 · 3170 阅读 · 2 评论 -
段的综述
用一个段存放数据,将它定义为“数据段”用一个段存放代码,将它定义为“代码段”用一个段当作栈,将它定义为“栈段”对于数据段吗,将它的段地址放在DS中,用MOV、ADD、SUB等访问内存单元的指令时,CPU就将我们定义的数据段中的内容当作数据来访问;对于代码段,将它的段地址放在CS中,将段中第一条指令的偏移地址放在IP中,这样CPU就将执行我们定义的代码段中的指令对于栈段,将它的段地址放在SS中,将栈顶单元的偏移地址放在SP中,这样CPU在需要进行栈操作的时候,比如执行PUSH、POP指令等,就将我们原创 2021-01-20 15:47:25 · 167 阅读 · 0 评论 -
栈
一、栈的定义和性质定义:栈是一种具有特殊的访问方式的存储空间特性:栈顶的元素总数醉后入栈,需要出栈时,又最先被从栈中取出*(LIFO:Last in,First out 后进先出)*二、CPU提供的栈的机制1、8086CPU提供入栈和出栈指令,最基本的两个是PUSH(入栈)和POP(出栈)2、8086CPU的入栈和出栈操作都是以字为单位进行的3、8086CPU中有两个寄存器,段寄存器SS和段寄存器SP。栈顶的段地址存放在SS中,偏移地址存放在SP中4、在任意时刻,SS:SP指向栈顶元素5、8原创 2021-01-20 15:36:07 · 730 阅读 · 0 评论 -
CS、IP寄存器
一、CS和IP1、CS和IP是8086CPU中两个最关键的寄存器,它们指示了 CUP当前药品读取指令的地址2、CS为代码段寄存器,IP为指令指针寄存器3、8086CPU的工作原理①从 CS:IP指向的内存的单元读取指令,读取的指令进门如指令缓存器②IP=IP+所读取指令的长度,从而指向下一条指令③执行指令。转到步骤①,重复这个过程二、修改CS、IP的命令1、在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制2、MOV指令不能用于设置CS、I原创 2021-01-17 10:00:35 · 4817 阅读 · 5 评论 -
8086CPU物理地址的表示方法
一、物理地址1、所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,成为物理地址2、CPU通过地址总线送入存储器的必须是一个内存单元的物理地址3、不同的CPU可以有不同的形成的物理地址的方式二、十六位结构的CPU的特性1、运算器一次最多可以处理16位的数据2、寄存器最大的宽度位6位3、寄存器和运算器之间的通路为16位三、8086CPU给出物理地址的方式①CPU中相关部件提供两个16位的地址,一个称为段地址,一个称为偏移地址②段地址和偏移地址通过内部原创 2021-01-14 09:51:50 · 2468 阅读 · 0 评论 -
寄存器基础知识
一、CUP各组成部分二、寄存器的种类1.不同的CPU,寄存器的个数、结构不相同2.8086CPU有14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW三、通用寄存器1、8086CPU的所有寄存器都是16位的,可以存放两个字节2、AX,BX,CX,DX这四个寄存器通常用来存放一般性的数据,被称为通用寄存器3、8086CUP上一代CPU中的寄存器都是8位的,为确保兼容,8086CUP的AX,BX,CX,DX这四个寄存器可以分为两个独立原创 2021-01-12 17:22:46 · 1851 阅读 · 0 评论 -
汇编语言基础
汇编语言基础一、汇编语言的体系二、机器语言1、机器语言是机器指令的集合2、电子计算机的机器指令是一系列二进制数字3、CUP使机器指令转变为一系列高低电平,以使计算机的电子器件受到驱动,进行运算4、每一种微处理器都有自己的机器指令集三、存储器1、CUP使计算机的核心部件,它控制整个计算机运作并进行运算2、指令和数据在存储器中存放,即内存四、指令和数据1、在内存山。指令和数据没有任何区别,都是二进制信息2、CUP在工作时,把有的信息看作数据,有的信息看作指令五、存储单元1、存储器被原创 2021-01-10 20:38:58 · 2056 阅读 · 3 评论