第八章知识汇总
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以此类推
以上是关于第八章知识汇总的主要内容,如果未能解决你的问题,请参考以下文章