汇编总结2

Posted yxy98

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编总结2相关的知识,希望对你有一定的参考价值。

一、寄存器

一个典型的cpu是由运算器,控制器,寄存器等器件组成的。

内部总线实现CPU内部各个器件之间的联系

外部总线实现cpu和主板上其他器件的联系

AX,BX,CX,DX通用寄存器

SI,DI,BP,SP基址和变址寄存器

CS,SS,DS,ES段寄存器

IP,FLAGS指令指针和标志寄存器

通用寄存器

8086cpu中,寄存器AX,BX,CX,DX通常用于存放一般性数据,称为通用寄存器,每个寄存器都是16位

为了和早期CPU兼容每一个寄存器都拆成了两个寄存器单独使用

AX分为AH和AL

字在寄存器中的存放

一个字由两个字节组成可以存在一个16位寄存器

字的高八位:存放于通用寄存器的高八位寄存器

字的低八位:存放于通用寄存器的低八位寄存器

MOV AX,20000  ; (AX)=4E20H

                             (AH)=4EH

                             (AL)=20H

 

汇编指令

mov ax,18   将18送入寄存器AX   AX=18

add ax,8 将寄存器AX中的数值加上8  AX=AX+8

mov ax,bx 将寄存器bx中的数据送入寄存器ax  AX=BX

add ax,bx 将AX和BX中的数值相加,结果存放在AX中 AX=AX+BX

mov ax,bl 是错误的指令原因是指令的两个操作对象位数不一样

物理地址

cpu访问内存单元时要给出内存单元的地址

所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,这个唯一的的地址称为物理地址。

8086的内部用两个16位地址通过计算合成得到一个20位的物理地址。

如:1230H*16+00C8H=123C8H

  段地址*16+偏移地址=物理地址

123CH*16+0008H=123C8H

理解成段的起始物理地址是:123C0H

段地址:偏移地址 1230:00C8或123C:0008

可以根据需要,将地址连续、起始物理地址为16倍数的一组内存单元当做一个段使用

CS和IP

CS:代码段寄存器,用于存放代码段的[段地址]

IP:指令指针寄存器,用于存放cpu将要读取的指令在代码段中的偏移地址

CS:IP对应的物理地址存放的cpu将要读取的指令

CS*16+IP是指令的物理地址

计算机工作的步骤

cpu基于CS:IP,计算出物理地址,然后得到相应的内存单元读取指令,送到指令缓冲区

cpu自动修改IP的值,IP=IP+所读取指令的长度,从而为下一条指令读取做准备

执行指令 转到第一步

IP和CS值的修改不能通过mov指令实现,需要借助转移指令(jmp,call)

同时修改CS IP的内容:jmp 段地址:偏移地址

比如jmp 2AE3:3 ;CS<-2AE3H

                             IP<-3H

只修改IP内容:jmp 某一合法寄存器

比如jmp AX ;IP<-AX

 

以上是关于汇编总结2的主要内容,如果未能解决你的问题,请参考以下文章

汇编实验第二章总结

汇编语言入门-总结

汇编总结2

优化系列MIPS架构汇编优化总结

Arm汇编学习总结

汇编语言基础总结