预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共369页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第2章指令系统和寻址方式2.1指令系统概述每条指令由两部分组成:操作码字段和地址码字段。格式如图2.1所示。根据地址码字段所给出地址的个数,指令格式可分为零地址、一地址、二地址、三地址和多地址指令。例如,停机HLT指令不需要操作数,是零地址指令;而增量指令(INCAX)和减量指令(DECAX)等只需要一个操作数,是一地址指令。大多数指令需要双操作数,对于这种指令,现代计算机多采用二地址指令,分别称两个操作数为源操作数和目的操作数,指令运算结果存入目的操作数的地址中去。这样,目的操作数的原有数据将被取代。Intel8086/8088的双操作数运算指令就采用这种二地址指令。 指令中用于确定操作数存放地址的方法,称为寻址方式。如果地址码字段直接给出了操作数,这种寻址方式称为立即寻址;如果地址码字段指出了操作数所在的寄存器编号,称为寄存器寻址;如果操作数存放在存储器中,则地址码字段通过各种方式给出存储器地址,称为存储器寻址。 指令分为机器指令和汇编指令两种形式。前一种形式由基2码(二进制)组成,它是机器所能直接理解和执行的指令。但这种指令不好记忆,不易理解,难写难读。因此,人们就用一些助记符来代替这种基2码表示的指令,这就形成了汇编指令。汇编指令中的助记符通常用英文单词的缩写来表示,如加法用ADD,减法用SUB,传送用MOV等等。这些符号化了的指令使得书写程序、阅读程序和修改程序变得简单、方便,但计算机不能直接识别和执行,在把它交付给计算机执行之前,必须翻译成计算机所能识别的机器指令。这个翻译过程由一个被称为“汇编程序”的工具软件自动实现。汇编指令与机器指令是一一对应的,本书中的指令都使用汇编指令形式书写,便于读者学习和理解。 2.28086/8088CPU的寻址方式操作数及操作结果存放的地点有三处:存放在指令的地址码字段中;存放在寄存器中;存放在存储器的数据段、堆栈段或附加数据段中。与其对应的有三种操作数:立即操作数、寄存器操作数和存储器操作数。寻找这些操作数有三种基本寻址方式:立即寻址方式、寄存器寻址方式和存储器寻址方式。其中,存储器寻址又包括多种寻址方式。下面分别介绍这些寻址方式。 1.立即寻址 在立即寻址方式中,寻找的操作数紧跟在指令操作码之后。这种寻址方式在汇编语言格式中表示为 数字表达式 这个数字表达式的值可以是一个8位整数,也可以是一个16位整数。 【例2-1】MOVAX,267 其中,“267”就是数字表达式,也就是立即寻址方式。 【例2-2】MOVAL,10010011BAND0FEH 其中,“10010011BAND0FEH”是一个数字表达式,是立即寻址方式。 【例2-3】MOVAL,PORT1 其中,PORT1是一个用EQU定义的符号名,属于常数,因此它也是立即寻址方式。 【例2-4】MOVAX,DATA1 其中,DATA1是定义的段名,实际上就是段地址,是一常数, 因此它也是立即寻址方式。 汇编时,汇编程序首先计算出数字表达式的值, 然后将其写入指令的地址码字段,称其为立即数。格式如图2.2所示。 当机器执行这种寻址方式的指令时,从指令地址码字段中取出立即数,即是指令所需要的操作数。 【例2-5】MOVAL,0FFH 操作过程的示意如图2.3所示。 【例2-6】MOVAX,1234H 操作过程的示意如图2.4所示。图2.38位立即寻址操作示意图图2.416位立即寻址操作示意图由此看出,这种寻址方式不需要访问存储器而是立即从指令中取得操作数。这正是立即寻址方式名称的含义所在。 由于在这种寻址方式中操作数是指令的一部分,不能修改,而一般情况下,指令所处理的数据都是在不断变化的,比如本条指令的操作数是上一条指令的执行结果。因此,这种寻址方式只能适用于操作数固定的情况。例如,给某一寄存器赋初值或给某存储单元提供常数等。 此外要注意,这种寻址方式不能用于单操作数指令;若用于双操作数指令,也只能用于源操作数字段,不能用于目的操作数字段。 2.寄存器寻址 寻找的操作数放在某个寄存器中。这种寻址方式在汇编语言格式中表示为 寄存器名 比如:AL,BX,CX,DS,IP等等。 【例2-7】MOVAX,BX 其中,“AX”,“BX”就是寄存器寻址方式。汇编时,汇编程序将寄存器的地址编号写入指令的地址码字段,如图2.5所示。 当机器执行含有这种寻址方式的指令时,根据地址码字段的编号访问到寄存器,继而得到操作数,如图2.6所示。 图2.6寄存器寻址示意图这种寻址方式的优点是:寄存器数量一般在几个到几十个,比存储器单元少很多,因此它的地址码短,从而缩短了指令长度,节省了程序存储空间。另一方面,从寄存器里取数要比从存储器里取数的速度快得多,从而提高了指令执行速度。 3.存储器寻址 当操作数放在存储器中的某个单元时,CPU要访问存储器才能获得