第八章知识汇总

Posted 1198264220pl

tags:

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

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

这两个基本问题是:

(1)处理的数据在什么地方?

(2)要处理的数据有多长

这两个问题,在机器指令中必须给以明确或者隐含的说明,否则计算机就无法工作。

本章中,我们就要针对8086CPU对这两个基本问题进行讨论

 

接下来,我们将使用两个描述性的符号:reg表示一个寄存器(ax,bx,cx,dx 以及其子、sp,bp,si,di)

                  sreg表示一个段寄存器(cs,ds,ss,es)

 

 

8.1 bx、si、di和bp

bx,si,di在第7章已经做过总结,在这里不做阐述

当我们在 [......]中使用到bp的时候,段地址就默认在ss中,而不在ds中!

 

8.2  机器指令处理的数据在什么地方?

绝大部分的机器指令都是进行数据处理的指令,处理大致(?)可以分为三类:读取、写入、运算

 

在机器指令的这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置

 

指令在执行前,所要处理的数据可以在3个地方:CPU内部、内存、端口(端口将在后面的课程进行讨论)

 

PS:P162 表格中的指令举例

 

 

8.3汇编语言中数据位置的表达

汇编语言中用3个概念来表达数据的位置:

(1)立即数(idata)

直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中(?))

 

(2)寄存器

指令要处理的数据在寄存器中,在汇编指令中给出的相应的寄存器名

 

(3)段地址(SA)和偏移地址(EA)

指令要处理的数据在内存中,在汇编指令中可用[X]的格式给出EA,而SA在某个段寄存器中

 

SA在哪个寄存器中呢,这个判断之前的章节已经做过太多的叙述,这里便不再多讲

 

我们可以显性的给出存放段地址的寄存器,例如:ds:[bp]等

 

8.4寻址方式

这,书上刚刚好有一份详细的表格,我们来看一下,这里就不作阐述了。。。。。。

 技术分享图片

8.5指令要处理的数据有多长

其实说白了,就是要知道你所要处理的是一个字型的数据,还是一个字节型数据。。。

这里给出三种方法

(1)通过寄存器直接给出

例如:mov ax,1

    mov al,1

 (2)通过操作符  word ptr 和byte ptr

 例如:mov word ptr ds:[0],1

    mov byte ptr ds:[0],1

PS:记得认认真真地看几遍栈!!!!!

 

 (3)其他方式 有一些默认了访问的是字还是字节单元的指令,比如push [1000H],指定了是字单元

 ??这里[1000H]的段地址是?

 

 

8.6 寻址方式的综合应用

P166耐心地看,这里不做过多阐述

 

8.7div指令

虽然书上也有,但是还要说一下:

div是除法指令,需要注意以下问题:

(1)除数:有8,16位两种,在一个reg或者内存单元中

(2)被除数:默认放在AX或者DX和AX中

如果除数为8位,被除数为16位,默认在AX中存放

如果除数为16位,被除数为32位,默认在DX和AX中存放

 DX存放高16位,AX存放低16位

 (3)结果:如果除数为 8位,则AL存储除法操作的商,AH存储除法操作的余数:

如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。

格式P169

 

8.8伪指令dd

在这里,我们把db,dw,dd三个伪指令放在一起比较来记忆

db 定义 byte,即字节型数据                   01H

dw 定义 word,即字型数据      0001H        

dd 定义 double word, 即双字型数据 00000001H

 

8.9dup

dup是一个操作符,在汇编语言和db,dw,dd一样,都是由编译器识别处理

例如:

db 3 dup  (0)

格式为: db  重复的次数  dup (重复的字节型数据)

    dw,dd以此类推

 



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

《构建之法》第八章自习感想与知识点

Java基础知识二次学习--第八章 流

第八章 linux系统用户及用户组相关知识

Android群英传知识点回顾——第八章:Activity与Activity调用栈分析

计算机基础与操作系统

20165103java程序设计第八章查漏补缺