第5-8章总结

1.[bx]与内存单元

[bx]是指 段地址在DS中,偏移地址在bx中的内存单元

mov ax,[bx]  设偏移地址为SA,段地址默认存储在DS寄存器中,那么该指令的作用是将地址为DS:SA处的值传入ax寄存器中。

用"()"符号解释为 (ax)=((DS)*16+(bx))

mov [bx],ax  设偏移地址为SA,段地址默认存储在DS寄存器中,那么该指令的作用是将寄存器ax值传入[bx]所代表的偏移地址的位置,用"()"符号解释为 ((DS)*16+(bx))=(ax)

2.loop指令

用于描述循环

需要和CX配合使用

(1).标号

标号s处有一条指令,add ax,ax用于累加,标号s代表该条指令的地址。

(2).loop s

当cx寄存器中的值不为0的时候将跳转到标号处循环执行add ax,ax。当cx=0的时候,loop s不再跳转,将执行Loops后面的指令。

用cx和loop实现循环框架如下:

         mov cx,循环次数

标号: 代码段

        loop  标号

3.段前缀

汇编指令mov ax,[bx]将偏移地址在寄存器bx中指出,而段地址默认在ds中,我们也可以在指令中显示的给出段地址

4.一段安全的空间

在汇编中,当我们更改某个内存地址的内容的时候需要十分谨慎,因为该地址可能存储着重要的代码或者数据,一旦覆盖或者更改会导致整个系统的崩溃。在DOS方式下,DOS和其他合法的程序一般都不会使用0:200~0:2ff这256个字节的空间。所以,使用这段空间是安全的,我们可以在debug下查看这段地址是否为0,如果为0证明该内存段未被DOS和其他程序使用。
5.dw——定义字型数据,即define word(类似,db即为定义字节数据)。

(这些数据的偏移地址分别为0、2、4、6、8、A、C、E,没有标号start时,它们的段地址在CS中,因为这是一段代码段)

6.标号start与end start——end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方,此处用end指令表明了程序的入口在标号start处,被转化为一个入口地址。

7.当程序被加载入内存之后,通过读到程序的入口地址,设置CS:IP。

8.and指令:逻辑与指令,按位进行与运算。
mov al, 01100011B
and al, 00111011B
执行之后:al =00100011B
通过该指令可将操作对象的相应位设为0,其他位保持不变。
9.or指令:逻辑或指令,按位进行或运算。
mov al, 01100011B
or al, 00111011B
执行之后:al =01111011B
通过该指令可将操作对象的相应位设为1,其他位保持不变

and:如果相同位置同为1时该位置结果为1,否则为0
or:如果相同位置同为0时该位置结果为0,否则为1

10.使用汇编编程,可以直接访问内存中的数据,对数据进行相关操作,现在需要通过汇编指令and,or对字符串数据进行大小写转换。

11.[bx+idata]表示一个内存单元

12、si和di是8086CPU中和bx功能相近的寄存器,si和di不能够分成两个8位寄存器来使用。用16位寄存器进行内存单元之间的数据传送,一次复制2个字节,一共循环8次。

13、在8086CPU中,只有bx、si、di和bp这四个寄存器可以用在“[···]”中来进行内存单元的寻址。只要在[···]中使用寄存器bp,而指令没有显式地给出段地址,段地址就默认在ss中。

14.div指令是8086汇编中的除法运算指令,它的结果不是浮点数,而是两个整数:商和余数。

转载于:https://www.cnblogs.com/qiuxuewen/p/10162553.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值