笔记——第二章

@(读书笔记)[汇编语言, 王爽]

前置知识

  1. 8086寄存器为16位,为了和以前的8位架构的CPU兼容,把寄存器可以逻辑上分为两部分——高位和低位。比如通用寄存器AX,BX,CX和DX都可以分为AH,AL,BH,BL,CH,CL,DH和DL。
  2. 由此而来的,CPU可以一次性对两种尺寸的数据进行处理。一种是字节(Byte),是8位结构,也就是8个bit组成;另一种是字(word),由两个字节组成,把它分为高字节位和低字节位,是16位。于是8086的寄存器里可以一次存储一个字或者两个字节。
    注意 00101010 11010001 这一串二进制码前面为高位,后面为低位。第0位数是从右往左数的,也就是1,而不是0。
  3. 也因为字和字节的不同,汇编指令要注意操作数的位数应当一致。比如MOV AX,BL就是错误的,因为BL只有8位,而AX有16位。
  4. 还要注意的是,当我们对al进行操作的时候,al是一个独立的8位寄存器来使用,和ah没有关系。比如在al和某数相加需要进位时,寄存器是不会给ah加上1的。但是若时ax做加减,那么al和ah之间是会有进位和退位的。总之不要简单地认为ax=ah+al。

物理地址

由于内存需求比较大,需要的地址总线会比CPU内部总线多。8086中地址总线是20位,而CPU一次只能处理16位。为了合成20位的内存地址,设计了一个段地址*16+偏移地址=物理地址的机制。

  • 物理地址是指每一个内存单元在计算机系统内存空间里唯一的内存地址。

段寄存器

CS:IP

这是代码段寄存器。CS代表当前指令所在物理地址的段地址,ip代表偏移地址。这是一个默认的配对,不能认为修改。

于是指令执行的具体过程是:从CS和IP中读取数据,送入CPU中的地址加法器得到物理地址,然后通过外部地址总线找到该物理地址指向的内存单元,读取到指令送回CPU中的指令缓冲器中,然后给IP加上该指令的长度,将IP从指向当前要执行的指令的内存地址改成指向下一条指令的内存地址。最后通过执行控制器执行指令。

注意:这里是先改变IP,然后再执行指令。这一点在当指令中有改变IP值的命令时,尤为重要。改变IP不能用MOV,得用jmp。

语法代码示例

mov ax,2000h
mov cs,ax  //改变cs的值

jmp 2ae3:3  //执行后cs=2ae3,ip=3
jmp ax  //执行后ip为ax里的值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,653评论 8 114
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 7,089评论 0 1
  • 汇编总结 汇编的发展史 机械语言 由0和1组成的机器指令(如:0101 0001 1101 0110) 汇编语言(...
    iChuck阅读 5,102评论 1 8
  • 关注人生 影响一生 ——参加全国首届人生教育论坛心得 春色阑珊四月天,数声啼鸟落花前。4月19日我...
    幸福人生云阅读 3,142评论 0 1
  • 宁: 你不能和所有的人分享你的秘密, 因为你知道不是每一个人都懂你, 就像开心说太多就变得平淡, 难过说太多就让人...
    两只兔牙阅读 1,599评论 0 3