第5~8章知识汇总

第五章 [BX]和loop指令

  • [BX]:bx是一个间接寻址单元,与[0]类似,它可以将一个内存单元的内容送入寄存器中,如mov ax,[bx],[bx]被看作偏移地址,默认的段地址为ds。寄存器如果用ax,则内存单元的长度为2,如果用al,则内存单元的长度为1。

  • loop:即循环,使用标号以及寄存器cx可以将程序进行循环操作,如

mov cx,3
s:add ax,1
loop s

即可认为s标记的指令被执行了3次

  • 嵌套循环可以用push和pop来保持外层的cx不被内部的cx干扰,如
mov cx,3
s:push cx
add ax,3
mov cx,2
s1:sub ax,1
loop s1
pop cx
loop s

这就是嵌套循环,sub指令总共执行了6次

第六章 包含多个段的程序

  • db:每个数据占一个字节单位

  • dw:每个数据占一个字单位即两个字节单位

  • 我们使用不同的段,可以将数据和程序分开存放,让程序更加整洁,并且解决了程序一个段所需空间不能超过64kb的问题.

  • 同时要记住,一个段内的数据所占的空间为 ((N+15)/16)×16,且(N+15)/16取大于等于它的最小整数,原理如下

在8086CPU架构上,段是以paragraph(16-byte)对齐的。程序默认以16字节为边界对齐,所以不足16字节的部分数据也要填够16字节。“对齐”是alignment,这种填充叫做padding。16字节成一小段,称为节

第七章 更灵活的定位内存地址的方法

两个指令

and;逻辑与,同为1则为1
or;逻辑或,有1则为1
  • 大小写转化,大写小写ASCII相差20h,即32,大写转小写加上32,小写转大写加上32

  • 与bx功能相近寄存器:si,di

  • idata:表示常量

  • 内存单元可以用[bx+idata]、[bx+si]、[bc+si+idata]等方式表示。

第八章 数据处理的两个基本问题

  • 与bx功能相近的寄存器:si、di、bp

  • div指令:除法运算

  • 除数:有8位和16位两种,在一个reg或内存单元中。

  • 被除数:默认放在ax或dx和ax中,如果除数为8位,被除数则为16位,默认放在ax寄存器中;如果除数为16位,被除数则为32位,在dx和ax中存放,dx放高16位、ax放低16位

原文地址:https://www.cnblogs.com/-Anguvia-/p/10154586.html