文档库 最新最全的文档下载
当前位置:文档库 › 微机原理重点集锦

微机原理重点集锦

微机原理重点集锦
微机原理重点集锦

第一章:计算机概述及基础知识

一、计算机中常用的半导体存储器类型和缩写:

1、只读存储器ROM:(Read Only Memory)

2、一次性可编程只读存储器 PROM(Programmable ROM)

3、随机存取存储器:RAM(Random Access Memory)

4、静态RAM:SRAM(Static RAM)

5、动态RAM:DRAM(Dyanmic RAM)

6、光可擦除电可编程只读存储器 EPROM(Erasable Programmable ROM)

7、电擦除电可编程只读存储器 EEPROM(Electrically Erasable Programmable ROM)

8、闪烁存储器 Flash Memory

二、常用存储器容量单位及表示方法:

1字节=8位二进制数,

1字=2字节=16位二进制数,双字=4字节=32位二进制数

1KB=1024B(字节)1MB=1024KB

1GB=1024MB 1TB=1024GB

1节=16字节1页=256字节1段=64KB(字节)

三、存储器中常用的术语、概念和含义:

1、存储器的物理地址:使用CPU全部地址线对存储器进行的编址,称为存储器的物理地址或绝对地址。(使用CPU全部寻址范围内的地址码对存储单元进行的编址称为存储器的物理地址或绝对地址。)

2、存储器的逻辑地址:由CPU内部段寄存器(即段基址)和偏移地址寄存器(例如:SI、DI、BP、和SP等寄存器)的当前值所构成的地址称为逻辑地址。

3、一个存储单元的物理(绝对)地址是唯一的,但可以有多个逻辑地址!(或:一个存储单元可以有多个逻辑地址,但仅有一个物理地址!)存储单元的物理地址可由段寄存器(即段基址)和偏移地址经运算或变换得到。其算法为:绝对地址=段基址X16(左移4位)+偏移地址

例1:段基址存放在段寄存器CS中,即CS=2000H,偏移地址在IP中,即IP=2200H,

则:绝对地址=段基址X16+偏移地址=20000H+2200H=22200H

例2:已知:CS=2200H IP=0200H,试计算其绝对地址。

绝对地址=段基址X16+偏移地址=22000H+0200H=22200H

由上可知绝对地址为22200H的存储单元它的逻辑地址可以有多个。

四、关于计算机中断技术中的基本概念和技术术语:

1、中断定义:计算机在执行当前程序或任务时,由于随机或突发事件的产生而暂停当前的工作转去为其服务,服务完成后再返回到刚才的断点处继续在这之前的工作,此过程称之为:中断。

2、断点:CPU响应中断时程序中止处的CS和IP的值(即:程序中止处的下一条指令的地址)。

3、中断源:采用中断方式与CPU或系统进行信息交换的外设或部件。

4、中断向量:中断服务子程序的入口地址被称之为:中断向量。

5、中断向量表:用来存放中断服务子程序的入口地址的存储区域被称之为:中断向量表。

6、中断类型码:在CPU响应外设中断请求时,由外设向CPU提供的用来查找中断向量表的索引码。

7、现场:在中断服务子程序中所使用的那些与主程序中符号相同但定义或作用不同的全局变量、工作寄存器或工作单元等。(即:在执行中断服务子程序时需要保护的内容)

8、中断优先级:外设产生中断请求时CPU或中断控制器对其进行响应或处理的先后顺序。

9、可屏蔽中断:可使用中断开、关指令控制CPU对中断请求的响应。这类中断称之为可屏蔽中断。8086 CPU的开中断指令为STI,可允许CPU响应外部中断请求。关中断指令为CLI可禁止CPU响应外部中断请求。

10、非屏蔽中断:CPU的中断响应不能使用中断开、关指令进行控制。这类中断称为不可屏蔽中断或非屏蔽中断(不可使用中断开、关指令控制CPU对中断请求的响应。这类中断称之为不可屏蔽中断或非屏蔽中断)。非屏蔽中断的优先级要高于可屏蔽中断。

11、中断优先级:多个中断源同时申请中断时CPU的响应策略或中断嵌套规则。

12、采用中断技术的优点:CPU工作效率高、实时性好、便于处理随机和突发事件。

13、中断响应和处理的实质内容:确定发出中断请求的中断源(即外设)或随机事件,找到并执行为该中断源服务的中断服务子程序。也即:其实质就是为了执行一段服务程序。

五、8086/8088 CPU的中断系统

1、中断分类:硬件中断、软件中断和内部操中断。

a. 硬件中断:由外设或外部信号所产生的中断请求称之为:硬件中断。其硬件中断又可分为非屏蔽中断和可屏蔽中断,其中,非屏蔽中断请求信号要连接到CPU的NMI引脚,而可屏蔽中断请求信号要连接到CPU的INTR引脚.

b. 软件中断:由执行CPU中断指令:INT n所产生的中断称为软件中断。

c. 内部操中断:由CPU内部的一些特定操作(例如:除数为0时所引起的除数为0中断,符号数运算过程中产生溢出时所引起的溢出中断,为方便程序的调试,每执行完一条指令时都可产生一次中断的单步中断等)所引起的中断称之为:内部操作中断。

2、中断响应条件:

a. 非屏蔽中断:将非屏蔽中断源的中断请求信号连接到CPU的NMI引脚,编写好中断服务子程序,并在主程序的系统初始化程序中建立好中断向量表(即:将中断服务子程序的入口地址填写到中断向量表中,其向量表地址由分配给该外设的中断类型码确定)。

b. 可屏蔽中断:将可屏蔽中断源的中断请求信号连接到CPU的INTR引脚,编写好中断服务子程序,在主程序的系统初始化程序中建立好中断向量表,并在主程序中的适当位置处使用CPU的开中断指令STI打开CPU中断,允许CPU接收外部可屏蔽中断请求。

c.软件中断:编写好中断服务子程序,在主程序的系统初始化程序中建立好中断向量表,在需要中断时的程序位置

处放一条INT n指令。

d.内部操中断:编写好中断服务子程序,在主程序的系统初始化程序中建立好中断向量表。当系统中出现特定内部

操作(即:除数为0、溢出和单步操作)时即可对其进行服务。

e.

3、中断向量表的建立:即:利用程序或指令将中断服务子程序的入口地址(逻辑地址)填写到中断向量表中。中断向量表的地址由外设的中断类型码确定。例如已知某外设的中断类型码为20H,其中断服务子程序的入口地址为:1234H:5678H,为其建立中断向量表就是将中断服务子程序的入口地址1234H:5678H填写到自内存空间地址0段20HX4开始的连续4个字节的存储单元中,即0000H:20HX4+0---0000H:20HX4+3的连续4个单元中,其存放顺序为:低地址存放低字节,高地址存放高字节:即自20HX4开始的连续4个字节的存储单元的内容分别如下:

(20H*4+3)=12H。

(20H*4+2)=34H,

(20H*4+1)=56H,

(20H*4+0)=78H,

4、可屏蔽中断的响应过程:

(1). 从数据总线D.B上读取外设提供的中断类型码并暂存.

(2). 将FR内容存入堆栈保护.

(3). 将标志位IF和TF清0,以便禁止INTR中断.

(4). 将当前的程序断点CS:IP存入堆栈保护.

(5). 利用外设提供的中断类型码计算中断向量表地址,并从中取出中断处理子程序的入口地址转去执行服务程序.

(6). 执行完中断服务子程序后恢复断点和FR的内容.

(7). 从中断返回。(即执行一条中断返回指令IRET)

第5章86系列微型计算机的指令系统

一、寻址方式:如何获得操作数的方法称之为寻址方式,8086CPU的寻址方式有以下4类:

1、立即寻址:当操作数直接出现在指令中时称为立即(数)寻址

2、寄存器寻址:当操作数在CPU内部寄存器中时称为寄存器寻址

3、直接寻址:当操作数的地址出现在指令中时称为直接寻址

4、寄存器间接寻址:当操作数的地址出现在寄存器中时称为寄存器寻址。在该寻址方式中操作数一定在存储单

元中,但存储单元的有效地址要求使用寄存器指定,这些寄存器可以使用BX、BP、SI和DI之一,即:存储

单元的有效地址要放在这其中的某个寄存器中。

有效地址:寻址所需要的偏移地址称之为有效地址

注意:在以上寻址方式中若目标操作数是非CS的段寄存器时,只能采用寄存器寻址方式产生或获得操作数!

例如:将数据段寄存器DS的内容设置为2000H

若直接使用指令:MOV DS, 2000H是错误的,可改为以下方式:

MOV AX, 2000H

MOV DS, AX

注意:两个无符号数相比较时,仅用CF标志即可判断两数大小,若CF=0则被减数大于等于减数。两个带符号数相比较时, 若OF和SF状态值相同则说明被减数大于等于减数,否则说明被减数小于减数。因两个相同符号数比较时不会发生溢出!

例1:将AX内容加1:即AX+1---AX

可以使用指令:ADD AX, 1 ;该指令的寻址方式为立即数寻址,具体操作和指令执行时间见P444第6栏中的第6行:acc, imm

即:ADD acc, imm;其中acc为累加器AX,imm表示立即数,该指令的时钟周期数为4,字节数为2—3。而如果改用:INC AX 指令也可实现AX+1;但其指令的时钟周期数为2,字节数仅为1,见P447第25栏中第1行:reg16(因AX

为16位,如果使用INC AL时为8位操作,即为reg8)。尽管以上2条指令的操作功能相同,但指令执行后对状态标志寄存器的影响是不一样的!ADD指令能影响除控制标志之外的所有的状态标志:CF、PF、AF、ZF、SF、OF,但INC 指令不影响CF标志!

即:若AL=0FFH时,执行INC AL后CF的状态不变!

例2:将AX内容清0

可以使用指令:MOV AX, 0 ;该指令的寻址方式为立即数寻址,具体操作和指令执行时间见P450第40栏中第6行:reg, imm,即:MOV reg, imm,由表中可知该指令的时钟周期数为4,字节数为2—3。

但如果改用:XOR AX, AX 指令,同样也可实现对AX清0的目的,但其指令的时钟周期数为3,字节数为2,见P455第75栏中的第1行:reg,reg,即:XOR reg, reg.

第6章微型计算机的程序设计

例3:编一段程序完成符号函数。见P151习题6.5,答案见P471

……………………………………………

X DB ? ;定义自变量DATA1

Y DB 0 ;定义函数值存放单元DATA2………………………………………………

MOV AL,X ;取自变量送AL以便对其进行判断

CMP AL,0 ;影响所有标志位:ZF、SF、CF等标志位

JNZ PNZ ;X不为0转移

MOV AL, 0 ;X=0

MOV Y,AL ;将0送函数值存放单元中

HLT

PNZ:JS PS ; 测试符号标志位若X<0转移。见P133转移指令表

MOV AL, 1 ;X>0

MOV Y,AL ;将1送函数值存放单元中

HLT

PS:MOV AL, 0FFH ;X<0,送-1的补码

MOV Y,AL ;将0送函数值存放单元中

HLT

P138 6.2 简单程序

例6.1将自10050H起连续存放的两个16位数求和后存入其后。低字节在低地址

例6.1 程序1

MOV AX, 1000H ;建立数据段指针

MOV DS, AX

MOV SI, 50H ;建立被加数偏移地址指针

MOV DI, 52H ;建立加数偏移地址指针

MOV BX, 54H ;建立和偏移地址指针

CLC ;清进位位。该指令可省,因下一条指令XOR AX, AX能够影响标志!!!

XOR A X, AX ;累加器清0

MOV AX, [SI] ;取出被加数送AX

ADC AX, [DI] ;两数相加

MOV [BX],AX ;存结果

HL T ;暂停

例6.1 程序2

MOV AX, 1000H ;建立数据段指针

MOV DS, AX

MOV SI, 50H ;建立被加数偏移地址指针

MOV AX, [SI] ;取出被加数送AX

ADD AX, [SI+2] ;两数相加,注:仅2个数相加时可以不使用带进位加法指令!

MOV [SI+4], AX ;存结果

HL T ;暂停

例6.2 将10050H单元的内容拆为两段,每段4位,存入其后

MOV AX, 1000H ;建立数据段指针

MOV DS, AX

MOV SI, 50H ;建立被加数偏移地址指针

MOV AL, [SI] ;取出待拆分数据送AL

AND AL, 0FH ;屏蔽高4位,分离出低4位

MOV [SX+1], AL ;存低4位

MOV AL, [SI] ;再次取出待拆分数据送AL

MOV CL, 4 ;建立逻辑右移次数计数器

SHR AL, CL ;逻辑右移4位分离出高4位

MOV [SI+2], AL ;存高4位

HL T

P140 6.3分支程序

例6.3 计算AX-BX的绝对值

例6.3 程序1 P141程序有错

CLC ;该指令可省

SUB AX, BX ;应改用CMP比较指令

JC AA

MOV DI, 2800H ;建立数据指针

MOV [DI], AX ;存结果

HL T

AA:SUB BX, AX ;由于前面执行SUB指令时操作数AX已被破坏。或改

;为:NEG AX MOV DI, 2800H ;因此得不到正确结果

MOV [DI], BX ;MOV [DI], AX

HL T

例6.3 程序2

MOV DI, 2800H ;建立数据指针

CMP A X, BX ;两数比较

JC AA ;若AX小于BX则转AA

SUB AX, BX ;计算两数之差

MOV [DI], AX ;存结果

HL T

AA:SUB BX, AX

MOV [DI], BX

HL T

例6.3 程序3

MOV DI, 2800H ;建立数据指针

SUB AX, BX ;两数相减

JC AA ;若AX小于BX则转AA

SUB AX, BX ;计算两数之差

MOV [DI], AX ;存结果

HL T

AA:NEG AX

MOV [DI], AX

HL T

例6.4从71H外设输入一个数据M,若M小于10则向73H外设输出00H,若M大于20则向73H外设输出0FFH,否则向73H外设输出88H。

START:IN AL, 71H ;从71H外设读入数据

CLC ;该指令可省,因下一条指令CMP AL, 10能够影响标志!!!

CMP A L, 10 ;判断是否小于10

JC LP1 ;若小于10则转LP1

CMP A L, 20 ;判断是否小于20

JC LP2 ;若小于20则转LP2

MOV BL, 0FFH ;建立M大于20时的输出数据

LP3:OUT 73H, BL ;将数据输出到73H外设

HL T

LP1:MOV BL, 0H ;建立M小于10时的输出数据

JMP LP3

LP2:MOV BL, 88H ;建立中间输出数据

JMP LP3

P143 6.4循环程序

例6.5求两个8字节数之和,两数自10050H起连续存放,并将求和结果存入其后。

程序1见P144下面

程序2 按字(16位)求和

START:MOV AX, 1000H ;建立数据段指针

MOV DS, AX

MOV SI, 50H ;建立被加数偏移地址指针

MOV CX, 4 ;建立计数器

CLC ;清进位位

NEXT:MOV AX, [SI] ;取出第一个数据的低字数据送AX

ADC AX, [SI+8] ;与第2个数据的低字相加

MOV [SI+16], AX ;存结果

INC SI;调整数据指针

INC SI;调整数据指针

DEC CX ;计数器减1

JNZ NEXT ;未完继续下一个字的相加

HL T

说明:如果使用CX做为计数器时可将上面的两条指令DEC CX 和JNZ NEXT简化为一条指令:LOOP NEXT 见

P133转移类指令表倒数第2栏“循环控制”指令中的

LOOP 目标标号

程序3 按字节(8位)求和

START:MOV AX, 1000H ;建立数据段指针

MOV DS, AX

MOV SI, 50H ;建立被加数偏移地址指针

MOV CX, 8;建立计数器

CLC ;清进位位

NEXT:MOV AL, [SI] ;取出第一个数据的低字节数据送AX

ADC AL,[SI+8] ;与第2个数据的低字节相加

MOV [SI+16], AL ;存结果

INC SI;调整数据指针

LOOP NEXT ;未完继续下一个字节的相加

HL T

P145

例6.6设计一个软件延时程序,延时时间约1mS左右

分析:当延时时间不长且计时精度要求不高时,可利用指令的执行时间实现延时,例如:当CPU主频为8MHZ时,其时钟周期为0.125uS,如果知道了指令所需要的时钟周期数便可知道指令的执行时间。于是可利用循环程序实现软件延时。

即:循环次数X=所需延时时间/一次循环时间,若循环体中采用PUSHF和POPF进行延时,而循环控制指令采用LOOP时,从P443附录A的指令表中可查到PUSHF指令的时钟周期数是14个(见P452第51栏右数第2列),而POPF指令的时钟周期数是12个(见P451第49栏右数第2列),而LOOP指令的时钟周期数是17/5个(见P449第37栏右数第2列),即跳转时(CX-1不等于0)为17个时钟周期,后继时为5个时钟周期。于是:循环次数 N=1000/[(14+12+17)0.125]≈186

START: MOV CX,186 ;设置循环次数

LP1:PUSHF ;循环体

POPF ;循环体

LOOP LP1 ;未完继续

HL T

写成更为通用的一般的延时子程序形式如下:

DT:MOV CX,N ;设置循环次数,或者将CX作为入口参数

DT1:NOP ;循环体

NOP ;循环体

DEC CX

JNZ DT1 ;未完继续

RET

循环体中也可使用其它指令,例如NOP(该指令为3个时钟周期,见P451右数第2栏)等,但循环次数要重新计算!如果需要再增加延时时间,则可采用双循环程序见P146,还可增加循环体中的指令条数,例如再增加几对PUSHF和POPF 指令,或在循环体中使用周期数更多的指令,例如乘除法指令等,乘法指令MUL见P450中的42栏,周期数最少的8位数乘法MUL reg8也要70-77个时钟周期,而16位数乘法MUL reg16则要118-133个时钟周期,若使用MUL mem16则至少要128个时钟周期。

所有转移指令都在P448 29栏中时钟周期都为16/4

P146 6.5 子程序

例6.8 有2个数据块分别自2000H和2800H起存放,每个数据块的第1个单元分别为数据块长度,其后是数据内容(类型为字节),试编一个程序分别找出各数据块中的最大值,分别存入MAX1和MAX2.。

START:: MOV SI,2000H ;建立数据块1指针指向数据长度单元

MOV CL,[SI] ;取出数据长度

MOV CH,0 ;构成16位计数器

DEC CX ;调整计数器

INC SI;调整数据指针指向数据

CALL F_MAX ;调用找最大值子程序,入口参数为SI,CX

MOV MAX1, AL ;出口参数AL为最大值存入指定单元

MOV SI,2800H ;建立数据块2指针指向数据长度单元

MOV CL,[SI] ;取出数据长度

MOV CH,0 ;构成16位计数器

DEC CX ;调整计数器

INC SI;调整数据指针指向数据

CALL F_MAX ;调用找最大值子程序,入口参数为SI,CX

MOV MAX2, AL ;出口参数为AL中存放着最大值

HL T ;存入指定单元

;找最大值子程序,人口参数为SI:数据指针;CX:计数器

出口参数为AL:用来存放找到的最大值

F_MAX:

MOV AL,[SI]

NEXT:INC SI

CMP A L, [SI]

JNC NEXT1

MOV AL, [SI]

NEXT1 LOOP NEXT

RET

练习题:将自DA TA起连续存放的2个单元的字节数据分离(高4位为0,低4位为数据)后送D_BUF开始的连续单元中。习题:P107 4.1—4.14 P135 5.1—5.9 P151 6.1—6.7

第七章微型计算机汇编语言及汇编程序

关于汇编语言的基本概念和术语

1、汇编语言:面向机器的利用助记符、符号地址、变量和标号等编写程序的语言称为汇编语言。(或简称为:面向机

器的编程语言)

2、源程序:用汇编语言编写的程序称为源程序。

3、汇编:由于用汇编语言编写的程序机器(即CPU)不能够直接执行,必须翻译成机器代码(即二进制代码)组成的

目标程序,这个翻译过程称为汇编。(由于机器不能够直接执行用汇编语言编写的程序,只能执行由机器代码(即二进制代码)组成的目标程序,这个将汇编语言翻译成机器代码的过程称为汇编。)

4、汇编程序:完成上述翻译过程的软件称为汇编程序。

例如而空操作指令NOP的机器码为90H(见P451第44栏),暂停指令HLT的机器码为0F4H(见P447第21栏),汇编程序在汇编时即将NOP和HLT指令分别翻译成机器码90H和0F4H后分别存入程序段存储器中后CPU才能执行。

5、反汇编:将机器代码转换成汇编语言的过程称为反汇编。

6、机器码:CPU可以直接执行的代码称为机器码或目标程序。

7.1 宏汇编语言的基本语法

一、常数、变量和标号

汇编语言程序语句=执行性语句+非执行性语句(即说明性语句)

执行语句:由CPU或处理器指令组成。与CPU类型有关,执行后CPU

都会产生相应的操作。

非执行语句或说明性语句:由伪指令或宏指令组成。与CPU类型无关,

不产生CPU的任何操作,只与汇编程序有关,不同版本的汇编程序

支持不同的伪指令

伪指令语句格式(见P154图7-2)与执行指令的语句格式(见P109图5-1)基本相同,但其伪指令语句和执行指令语句的作用大不不同,在汇编时伪指令语句不产生机器码。仅用来告诉汇编程序如何将指令语句或伪指令语句中的操作数转换成目标代码。

1、CPU或处理器指令中的操作数可以是立即数、寄存器和存储单元。且立即数只能是整数。

2、执行性语句中的标号后要加冒号‘:’,而非执行性语句的标号后不能加冒号!

3、伪指令中的操作数可以是常数、字符串、常量名、变量名、标号、表达式和专用符号(例如:BYTE、WORD、FAR、

PARA)等,可以有多个,各参数之间用逗号分隔。

●常数:二、八、十、十六进制数,实数、带引号的字符串(例如“AB”=41H、42H)等。

●标号:指令目标代码的符号地址。常用作转移指令或子程序调用指令中的目的操作数。

●变量:存放在内存单元中的数据或称内存数据(即对内存数据起一个名,常被称作存储单元的符号地址)。这

些数据在程序运行期间可被随时访问或修改。其属性有3个:

段属性SEG:指出该变量所在的逻辑段。

偏移属性OFFSET:指出该变量所在逻辑段中相对该段起始点的偏

移量。

类型属性TYPE:表示该变量所占用内存单元的字节数。一般由数

据定义伪指令进行定义,常用数据定义伪指令有:

DB:定义字节。见P160伪指令中的:2.内存数据定义伪指令

DW:定义字。

DD:定义双字。

变量在使用前必须要先进行定义:即对其进行命名、定义类型和预置初值

变量定义伪指令的语句格式为:见P156

变量名变量类型表达式1,表达式2,…

其表达式形式如下:

1、数值表达式:数或简单算术表达式。例如

DATA1DB 50H,50

DATA2DB 01,12,23,23+5×6

DATA3DW 1234H,2345H,3456H,56X78/28

2、?表达式:不带引号的?表示该内存单元可为任意值

DATA1DB ?,?;自DATA1地址开始预留2个单元

DATA2DB 1,2,3,?,?;前3个字节单元置初值,后2个

;字节单元随意

DATA3DW ?,?,3456H,56X78/28;前2个字单元随意,

;后2个字单元预置初值

3、字符串表达式:字符串必须用单引号括起来且不超过256个字符,

存放时按字符串的书写顺序自左向右按地址递增顺序存放。

数据类型为DB时,每个字符分配一个字节单元。

数据类型为DW时,每2个字符为一组分配2个字节单元,前一

字符在高地址字节,后一字符在低地址字节,每个数据项不能多于2个字符。

数据类型为DD时,每2个字符为一组分配4个字节单元,将字

符存入低2个字节顺序同DW,高2个字节存入00H.

例1:STRING1 DB ‘ABCDEF’;即将41H-46H存入自STRING1开始的连续

6个字节单元中

例2:STRING2 DW ‘AB’,‘CD’,‘EF’;即将41H-46H存入自STRING1

[STRING2]=42H ; 开始的连续3个字单元中

[STRING2+1]=41H ;

[STRING2+2]=44H

[STRING2+3]=43H

[STRING2+4]=46H

[STRING2+5]=45H ; 见P157图7-3

4、带DUP的表达式:用于对多个内存单元进行重复设置。也称重复数据

操作符或重复数据操作伪指令。

语句格式为:变量名变量类型表达式1 DUP (表达式2);其中表

达式1为重复次数,表达式2为重复内容。

例1:DATA1DB20H DUP (?);自DATA1地址开始预留20H个

;单元,内容随意。

例2:DATA2DW 20 DUP (0);将自DATA1地址开始的连续20个

;字单元(即40个字节)清0

二、常用表达式和运算符:

1、算术运算符

2、逻辑运算符

3、关系运算符

4、分析运算符:(见P158)

(1)SEG 求段基址;格式:SEG <符号名>

例:SEG DATA1 ;求变量DATA1的段基址

(2)OFFSET 求偏移地址;格式:OFFSET <符号名>

例:OFFSET DATA1 ;求变量DATA1的偏移地址

(3)TYPE 求符号名或变量的类型值;格式:TYPE <符号名>;其变

量的类型值见P159表7—1

例如:TYPE DATA1;=1 ,TYPE DATA2;=2

其中DATA1、DATA2的类型定义见上面例1、例2

5、组合运算符:

(1)定义符号名为新类型;格式:<类型> PTR <符号名>

例1:MOV AX,WORD PTR DATA1 ;将DATA1重新定义为字类型

例2:MOV AL,BYTE PTR DATA2 ;将DATA1重新定义为字节类型

7.2 常用伪指令见P160

1、符号定义伪指令作用:对所用符号进行赋值

格式:<符号名>EQU <表达式>;定义后不能重新赋值

<符号名> = <表达式>;定义后可以重新赋值

2、内存数据(即变量)定义伪指令:即:DB、DW、DD

作用:定义内存变量的类型属性

[变量名] DB <表达式>

3、段定义伪指令作用:对段进行命名和定位

格式:<段名> SEGMENT [定位方式] [连接方式] [‘类别名’]

编程时一般使用默认值(即段边界方式)即可。

定位方式是指段的起始地址常用的定位方式(见P162)如下:

PAGA:页边界,即段起始地址的低8位为0

PARA:段边界,即段起始地址的低4位为0.该方式为系统默认方式

WORD;字边界,即段起始地址的最低位为0

BYTE:任意值

4、段寄存器说明伪指令

格式:ASSUME段寄存器名:段定义名1…

5、过程定义伪指令:

格式:<过程名> PROC[NEAR或FAR];括号内为过程属性

…………

<过程名> ENDP

6、模块开始伪指令:格式:NAME模块名

作用:对程序模块进行命名,模块名可以自行定义,但不能使用关键字!可以默认,其默认名为列表文件标题的前6个字符,若无标题时则默认名为该程序模块的源文件名。

7、模块结束伪指令:格式:END[启动标号或过程名]

作用:通知汇编程序源文件结束,并给出执行程序的入口地址。启动地址只有在主程序模块才有意义。

8、定位伪指令:格式:ORG<表达式>

作用:指定数据或程序在内存中的起始偏移地址,从表达式指定的起点开始连续存放直到遇到新的ORG指令为止。

表达式为无符号数。

9、列表伪指令:

(1)建立标题:格式:TITLE 标题

作用:为列表文件每页的第1行定义大标题

(2)建立小标题:格式:SUBTTL标题

作用:为列表文件每页定义小标题,输出在大标题之后。

(3)自动排版:格式:PAGE行数,每行字数(即列数)

作用:为列表文件定义每页行数(10—255行)和每行字符数

(60--132),默认值是66行80列。

伪指令或说明性语句的作用:对变量、工作单元或符号等进行定义或说明,以增加程序的可读性等。例如:

已知16位发动机转速测量值存放在2000H和2001H(高8位)单元中,8位温度测量值存放在2002H单元中,试编一个程序将转速测量值送AX寄存器中,温度测量值送DL 寄存器中。

程序1:

MOV AX, [2000H] ;将转速测量值送AX寄存器

MOV DL, [2002H] ;将温度测量值送DL寄存器

分析:尽管程序简单,但不知内存单元中存放的是何数据,缺乏可读性!

程序2:

DATA SEGMENT ;段定义伪指令

ORG2000H ;对存放数据的偏移地址进行定位伪指令

ZS DW 0 ;分配转速存放单元

WD DB 0 ;定义温度存放单元

DATA ENDS

……………………………………………

MOV AX, ZS ;将转速测量值送AX寄存器

MOV DL, WD ;将温度测量值送DL寄存器

由此可知利用伪指令对工作单元或变量进行了定义后,使得程序具有了可读性!

7.3宏指令

7.3.1 宏指令概述:

为简化汇编语言程序的书写,将程序中重复出现的内容或代码定义为?宏指令?(即用一条宏指令代替),在其原位置处只需放一条宏调用语句即可,于是可大大简化源程序的书写,提高源程序的可读性。宏指令类似于子程序或过程,但二者有明显的区别:

1、执行方式不同:宏调用语句属于说明性语句由汇编程序MASM-86中的宏处理程序代换进行处理,不会引起CPU的任何操作,而子程序调用或过程调用语句是由CPU执行。

2、对内存空间的占用方式不同:宏指令在执行时是由汇编程序将宏指令出现的地方将其原内容或原程序段换回!只简化书写,不节省内存!而子程序或过程是将重复出现的内容或代码与主程序分开单独存放!其目标代码在内存中只保留一份!既简化书写又节省内存!

3、CPU工作时间开销不同:由于宏指令在汇编时是将该宏指令所代替的原内容换回,因此CPU在执行程序时无需额外耗费任何时间,而产生子程序或过程调用时,CPU必须要进行断点甚至现场的保护和恢复,从而产生额外的时间开销,而降低程序的执行速度。

4、对工作参数的要求不同:在进行宏调用时允许改变或修改其工作参数,使得同一条宏指令在各次不同的调用过程中可完成不同的操作,具有较好的灵活性,而子程序或过程一旦被定义,一般不允许修改参数,因此如何子程序或过程在各次调用中只能完成相同的功能。其灵活性不如宏指令!

由上归纳可知:一般情况下当程序中重复性的内容或代码较长,且工作参数相对固定时可采用子程序或过程,当程序中重复性的内容较少或代码较短,且希望在各次调用时能够修改工作参数时,宜采用宏调用方式。

7.3.2 宏指令的定义和使用方法

一、宏指令使用说明:

宏指令在使用前必须要先进行定义!其步骤如下:

1、宏定义:即对程序中所出现的重复性内容或代码进行定义,并起一个

名。

2、宏调用:在程序中出现重复性内容或代码位置处用一条宏调用语句进行替换。(即将其重复性内容或代码位置处通过宏指令名来调用它)

3、宏扩展(宏展开):由宏汇编程序在宏调用语句(即宏调用指令)处,将原内容换回。并在展开的指令语句左端加上标识符:+

二、宏代换和宏调用语句格式:

1、宏代换语句格式:

宏名MACRO [形式参数1,形式参数2,…] ;形式参数为可选项

宏体;即需要进行宏代换的内容或代码

ENDM

2、宏调用语句格式:

宏名实在参数1,实在参数2,…;实在参数必须与形式参数对应

P167例:

宏定义AH MACRO Y,X ;Y、X分别为形式参数

MOV CL, X

RO&Y CL ;教材P167原题有错,该语句缺少源操作数!

;当被宏代换的内容为指令助记符中的符号

;时,要在符号前加宏代换符&

ENDM

AH MACRO Y, X ;AH为宏名,Y、X为形式参数

MOV CL,X

RO&Y AL,CL ;或为:RO&Y CL,CL

ENDM

宏调用:AH R, 5 ; 其中R为和形式参数表中的Y所对应的实在参数

;5为和形式参数表中的X所对应的实在参数

宏展开:+ MOV CL, 5

+ ROR AL,CL

补充:宏指令和子程序应用举例:

已知两位LED数码显示器的I/O地址分别是:个位为LED0,十位为LED1,试编一个程序将DA TA单元的内容送LED进行显示。即该单元的低4位送个位LED0,高4位送十位LED1。

ORG 1000H ;程序模块定位

DA TA SEGMENT;定义数据段

LED_TBL D B 3FH,06H,5BH,……;建立0—9的7段LED数码显示器段码表

DA TA DB 36H ;预置待显数据

DA TA ENDS;数据段结束

STAC SEGMENT PARA STACK‘DA T ’;定义堆栈段

STA1 DW10 DUP(?)

STAC ENDS ;堆栈段结束

CODE SEGMENT PARA ‘CODE ’;定义代码段

ASSUME CS:CODE,DS:DA T,SS:STAC

STAR PROC FAR;过程定义

PUSH DS ;保护操作系统当前的数据指针DS:00(即现场)以便执行

XOR AX,AX ;完用户程序后恢复

PUSH AX

MOV AX,SEG LED_TBL ;获取并建立用户数据区的段基址

MOV DS,A X ;建立用户段

MOV AL,DA TA ;取出数据送AL

AND AL,0FH ;分离出低4位

MOV BX,OFFSET LED_TBL ;获取用户数据区的偏移地址

XLA T ;查表将低4位数据转换为LED七段码CB LED0 ;宏调用

OUT LED0,AL ;将查表得到的LED七段码输出到LED外设

MOV AL,DA TA ;再次取出数据送AL

SHR AL, 1 ;右移4位分离出高4位

SHR AL, 1 ;

SHR AL, 1 ;

SHR AL, 1 ;

MOV BX,OFFSET LED_TBL ;获取用户数据区的偏移地址

XLA T ;查表将低4位数据转换为LED七段码CB LED1 ;宏调用

OUT LED1,AL ;将查表得到的LED七段码输出到LED外设

RET

STAR ENDP;过程结束

CODE ENDS;代码段结束

END STAR;模块结束

;宏定义;即宏代换语句

CB MACRO X;CB为宏名,X为形式参数

MOV BX,OFFSET LED_TBL ;获取用户数据区的偏移地址宏体

XLA T ;查表将低4位数据转换为LED七段码宏体

OUT X,AL ;将查表得到的LED七段码输出到LED外设宏体

ENDM

解法2:采用宏指令方式

ORG 1000H

DA TA SEGMENT;定义数据段

LED_TBL D B3FH,06H,5BH,………;建立7段LED数码显示器段码表:0--9

DA TA DB36H ;待显数据

DA TA ENDS;数据段结束

;定位方式,连接方式,类别名(自定义符)

STAC SEGMENT PARA STACK‘DA T ’;定义堆栈段

STA1 DW10 DUP(?)

STAC ENDS ;堆栈段结束

CB MACRO X ;宏定义(即宏代换语句):CB为宏名,X为形式参数。

MOV BX,OFFSET LED_TBL ;获取用户数据区的偏移地址宏体

XLA T ;查表将低4位数据转换为LED七段码宏体

OUT X,AL ;将查表得到的LED七段码输出到LED外设宏体

ENDM

CODE SEGMENT PARA ‘CODE ’;定义代码段

ASSUME CS:CODE,DS:DA T,SS:STAC

;STAR PROC FAR

PUSH DS ;保护操作系统当前的数据指针DS:00(即现场)以便执行

XOR AX,AX ;完用户程序后恢复

PUSH AX

MOV AX,SEG LED_TBL ;获取并建立用户数据区的段基址

MOV DS,A X ;建立用户段

MOV AL,DA TA ;取出数据送AL

AND AL,0FH ;分离出低4位

CB LED0 ;宏调用指令

MOV AL,DA TA ;再次取出数据送AL

SHR AL, 1 ;右移4位分离出高4位

SHR AL, 1 ;

SHR AL, 1 ;

SHR AL, 1 ;宏展开时即为下面3条语句

CB LED1 ;宏调用指令;+MOV BX,OFFSET LED_TBL

;STAR ENDP ;+XLA T

CODE ENDS ;+OUT LED1,AL ;LED1为实参END STAR

解法3:采用子程序方式完成上例(可利用DX作为入口参数)

…………………………………………;只给出执行语句部分,其它内容略

PUSH DS ;保护操作系统当前的数据指针DS:00(即现场)以便执行

XOR AX,AX ;完用户程序后恢复

PUSH AX

MOV AX,SEG LED_TBL ;获取并建立用户数据区的段基址

MOV DS,A X ;建立用户段

MOV AL,DA TA ;取出数据送AL

AND AL,0FH ;分离出低4位

MOV DX,LED0 ;建立子程序的入口参数

CALL CB ;调用子程序

MOV AL,DA TA ;再次取出数据送AL

SHR AL, 1 ;右移4位分离出高4位

SHR AL, 1 ;

SHR AL, 1 ;

SHR AL, 1 ;

MOV DX,LED1 ;建立子程序的入口参数

CALL CB ;调用子程序

HL T

CB:MOV BX,OFFSET LED_TBL ;获取用户数据区的偏移地址

XLA T ;查表将4位数据转换为LED七段码

OUT DX,AL ;将查表得到的LED七段码输出到LED外设

RET

汇编语言编程练习:P194 习题7.1采用查表方式进行程序设计:见P150:6.6

7.1在数据区中,自TABLE开始连续存放0—6的立方值表,设任给一数X(0≤X≤6),X在TAB1单元,查表求其立方值,并将结果存入TAB2单元,在源程序中设置数据段、堆栈段及代码段。

ORG 2000H ;程序或模块定位伪指令

DA T SEGMENT PARA ‘DA T ’;定义数据段

TABLE DB0H,1H,8H,27H,64H,125H,216H ;定义数据区,并为其

;分配内存单元,也可将其分为2行写

TAB1 DB 3 ;定义X存放单元

TAB2 DB ? ;定义存放结果数据单元,并为其分配内存单元

DA T ENDS ;数据段结束

STAC SEGMENT PARA STACK‘DA T ’;定义堆栈段

STA1 DW10 DUP(?)

STAC ENDS ;堆栈段结束

CODE SEGMENT PARA ‘CODE ’;定义代码段

ASSUME CS:CODE,DS:DA T,SS:STAC

STAR PROC FAR

PUSH DS ;保护操作系统当前的数据指针DS:00(即现场)以便执行

XOR AX,AX ;完用户程序后恢复

PUSH AX

MOV AX,SEG TABLE ;获取数据区的段基址

MOV DS,A X ;建立用户段

MOV BX,OFFSET TABLE ;获取数据区的偏移地址

MOV AL,TAB1

XLA T

MOV [TAB2],AL

RET

STAR ENDP ;过程结束

CODE ENDS ;代码段结束

END STAR;程序模块结束

若程序不是过程或子程序形式时,当用户程序执行完后应使用以下指令返回操作系统

MOV AH,4CH ;返回操作系统。或使用MOV AX,4C00H

INT 21H

P178 7.6 汇编语言程序设计

例7.1将内存中自A1地址起连续存放的8个字节的数据转换成ASCII码存于其后,并利用DOS功能2号调用在屏幕上显示这些数据,每个数据之间用空格分隔。要求:在源程序中设置数据段、堆栈段及代码段。程序见P179—181

工作寄存器分配:SI为源数据指针,DI为目的数据指针,CX为循环控制计数器,AX、BX、DX寄存器为工作单元

解法1 程序见P179—181

1:NAME EX1;程序模块命名伪指令(见P163 6),程序名为:EX1

2:PAGE50,70 ;列表伪指令(见P163 9),用来定义每页行数50,

3:;每行字符数70,默认值为66行80列(即字符数)

4:DA T SEGMENT PARA ‘DA T ’;定义数据段、段边界及类别

5:A1DB12H,34H,56H,78H,9AH,0BCH,0DEH,0F0H

6:B1=$-A1 ;求符号地址A1到当前汇编指针地址$之间的字节数,

;即自A1起存放的数据个数。可使该计数值随数据个数变化

7:B2=B1×2 ;求2倍的B1做为ASCII码数据区的长度

8:A2 DB B2 DUP(?);定义ASCII码数据区,并为其分配内存单元

9:DA T ENDS ;数据段结束

10:;--------------------------------------

11:STAC S EGMENT PARA STACK‘DA T ’;定义堆栈段、段边界及类别

12:STA1DW100 DUP(?);预留出堆栈区工作单元

13:STAC E NDS ;堆栈段结束

14:;---------------------------------------

15:CODE SEGMENT PARA ‘CODE ’;定义代码段并对段寄存器进行说明

16:ASSUME CS:CODE,DS:DA T,SS:STAC,E S:DA T

17:STAR P ROC FAR ;定义过程,过程名为:STAR,属性:远过程FAR

18:PUSH DS ;保护操作系统当前的数据指针DS:00(即现场)以便执行

19:XOR A X,AX ;完用户程序后恢复

20:PUSH AX

21:MOV AX,SEG DA T ;获取DA T的段基址

22:MOV DS,A X ;建立用户的数据段基址

23:MOV ES,A X ;建立用户的附加段基址

24:LEA SI,A1 ;建立偏移地址指针,LEA指令见P118

25:MOV DI,OFFSET A2;也可采用该指令

26:MOV CX,B1 ;建立外循环计数器

27:G1:MOV BL, 2 ;建立内循环计数器

28:MOV AL,[SI] ;取出一个数据送AL

29:MOV BH,AL ;将原数保护到BH

30:PUSH CX ;保护CX

31:MOV CL, 4 ;设置循环移位次数

32:ROR A L,CL ;AL向右循环移位4位

33:POP CX ;恢复CX

34:G2 AND AL,0FH ;分离出高4位

35:DAA ;十进制调整。蓝色语句为将分离出的高4位转换为ASCII码

36:ADD AL,0F0H ;

37:ADC AL,40H ;转换为十六进制数的A SCII码

38:MOV [DI],AL ;存转换结果

39:INC DI ;调整ASCII码数据区指针

40:MOV AL,BH ;回复原数

41:DEC BL ;内循环次数减1未完继续

42:JNZ G2 ;

43:INC SI;调整原始数据指针

44:LOOP G1 ;外循环次数减1未完继续

45:MOV SI,OFFSET A2

46:MOV CX,B2 ;建立调用子程序CALL P1的入口参数

47:CALL P1

48:RET

49:STAR E NDP

CRT屏幕上显示ASCII字符子程序;入口参数SI为待显示的A SCII码数据区指针,CX为待显示的字符个数。

50:P1 PROC NEAR

51:G MOV BL, 2 ;建立计数器

52:MOV DL,[SI] ;将待显字符送DL寄存器做为入口参数

53:MOV AH, 2 ;设置系统功能调用号2:显示单字符

54:INT 21H ;执行系统功能调用

55:INC SI;调整ASCII码数据区指针

56:DEC BL ;计数器减1

57:JNZ T

58:MOV DL,‘’;两字符之间留一个空格,或MOV DL,20H

59:MOV AH, 2

60:INT 21H

61:T LOOP G ;判断是否显完所有字符

62:RET

63:P1ENDP;过程结束

64:CODE ENDS;代码段结束

65:END STAR;程序模块结束

例7.1将内存中自A1地址起连续存放的8个字节的数据转换成ASCII码存于其后,并利用DOS功能2号调用在屏幕上显示这些数据,每个数据之间用空格分隔。要求:在源程序中设置数据段、堆栈段及代码段。解法1程序见P179—181

工作寄存器分配:SI为源数据指针,DI为目的数据指针,CX为循环控制计数器,AX、DX寄存器为工作单元

解法2 采用子程序方式

1:NAME EX1 ;程序模块命名伪指令(见P163 6),程序名为:EX1

2:PAGE 50,70 ;列表伪指令(见P163 9),用来定义每页行数50,

3:;每行字符数70,默认值为66行80列(即字符数)

4:DA T SEGMENT PARA ‘DA T ’;定义数据段、段边界及类别

5:A1 DB12H,34H,56H,78H,9AH,0BCH,0DEH,0F0H

6:B1 =$-A1 ;求符号地址A1到当前汇编指针地址$之间的字节数,

;即自A1起存放的数据个数。

7:B2 =B1×2 ;求2倍的B1做为ASCII码数据区的长度

8:A2 DB B2 DUP(?);定义ASCII码数据区,并为其分配内存单元

9:DA T ENDS ;数据段结束

10:;--------------------------------------

11:STAC S EGMENT PARA STACK‘DA T ’;定义堆栈段、段边界及类别

12:STA1 DW100 DUP(?)

13:STAC E NDS ;堆栈段结束

14:;---------------------------------------

15:CODE SEGMENT PARA ‘CODE ’;定义代码段并对段寄存器进行说明

16:ASSUME CS:CODE,DS:DA T,SS:STAC,E S:DA T

17:STAR P ROC FAR ;定义过程,过程名为:STAR,属性:远过程FAR

18:PUSH DS ;保护操作系统当前的数据指针DS:00(即现场)以便执行

19:XOR A X,AX ;完用户程序后恢复

20:PUSH AX

21:MOV AX,SEG DA T ;获取DA T的段基址

22:MOV DS,A X ;建立用户的数据段基址

23:MOV ES,A X ;建立用户的附加段基址

24:LEA SI,A1 ;建立偏移地址指针,取有效地址指令LEA见P118

25:MOV DI,OFFSET A2 ;建立偏移地址指针

26:MOV CX,B1 ;建立外循环计数器

27:G1:MOV BL, 2 ;建立内循环计数器

28:MOV AL,[SI] ;取出一个数据送AL

29:MOV AH,AL ;将原数保护到BH

30:SHR AL ;先分离出高4位蓝色指令表示与解法1中不同之处

31:SHR AL

32:SHR AL

33:SHR AL

34:CALL P2 ;调子程序转换为ASCII码

35:MOV AL,AH ;恢复原数

36:AND AL,0FH ;分离出低4位

37:CALL P2 ;调子程序转换为ASCII码

38:INC SI;调整原始数据指针

39:LOOP G1 ;

40:MOV SI,OFFSET A2

41:MOV CX,B2 ;建立调用子程序CALL P1的入口参数

42:CALL P1

43:RET

44:STAR E NDP

;在CRT屏幕上显示A SCII字符子程序;入口参数SI为待显示的A SCII码数据区指针,CX为待显示的字符个数,出口参数为ASCII码数据区。AX、BX为工作单元

45:P1 PROC NEAR

46:G MOV BL, 2 ;建立计数器

47:MOV DL,[SI] ;将待显字符送DL寄存器做为入口参数

48:MOV AH, 2 ;设置系统功能调用号2:显示单字符

49:INT 21H ;执行系统功能调用

50:INC SI;调整ASCII码数据区指针

51:DEC BL ;计数器减1

52:JNZ T

53:MOV DL,‘’;两字符之间留一个空格

54:MOV AH, 2

55:INT 21H

56:T LOOP G ;判断是否显完所有字符

57:RET

58:P1 ENDP;过程结束

59:CODE ENDS;代码段结束

60:END STAR;模块结束

解法2子程序:将1位十六进制数转换为ASCII码子程序。入口参数:AL为待转换的十六进制数,DI为存放ASCII码数据区指针。

P2 PROC FAR ;过程定义,属性为远

ADD AL,30H

CMP A L,3AH ;判断是否为十进制数

JC G3 ;若小于3AH则为十进制数

ADD AL,07H ;转换为十六进制数的A SCII码

G3 MOV [DI],AL ;存结果

INC DI ;调整ASCII码数据区指针

RET ;从子程序返回

P2ENDP

;将一个字节数据转换为A SCII码子程序;入口参数:AL为待转换的数,DI为数据指针

P3PROC FAR;定义过程,过程名为:P3,属性:远过程FAR可以跨段调用

PUSH AL ;保护原数

SHR AL ;逻辑右移4位分离出高4位

SHR AL

SHR AL

SHR AL

CALL P2 ;调用将1位十六进制数转换成A SCII码子程序,见例7.1

MOV [DI],AL ;存高4位结果

INC DI ;调整数据指针

POP AL ;恢复原数以便分离出低4位

AND AL,0FH ;分离出低4位

CALL P2 ;调用子程序将1位十六进制数转换成A SCII码,见例7.1

MOV [DI],AL ;存低4位结果

INC DI ;调整数据指针

RET

P3 ENDP ;过程结束

例2:P194 习题7.2 答案见P473—474

已知微机原理课考试成绩存放在数据区BUF中,试编写程序分别统计出小于60分、60-89分和大于等于90分的人数,并在屏幕上当前光标位置下一行的左边起点处显示出统计结果。

(设总人数不超过1位十进制数)

工作寄存器分配:BX:数据指针,CX:循环控制计数器,AH:大于等于90分人数统计计数器

DH:小于60分人数统计计数器,DL:60-89分人数统计计数器

1:NAME CJTJ ;程序模块命名伪指令(见P163 6),程序名为:CJTJ

2:PAGE60,80 ;列表伪指令(见P163 9),用来定义每页行数60,

3:;每行字符数80,系统默认值为66行80列(即每行字符数)

4:DA TA SEGMENT PARA ‘DA T ’;定义数据段,定位方式为段边界

5:BUF DB60,75,96,68,87,53,93,46,92,33 ;定义存放考试成绩数据区

6:XX DB?,20H,?,20H,?,‘$’;定义结果数据区,两数据之间空一格

;空格命令为20H,见P458 ASCII码字符表

7:MESG DB;‘THE RESUL T IS:<60 60-89 >90’,‘$’;定义提示符数据

;区,并为其分配内存单元

8:DA TA ENDS ;数据段结束

9:STAC SEGMENT PARA STACK‘STAC ’;定义堆栈段

10:DW50 DUP(?);为堆栈区预留50个字

11:STAC E NDS ;堆栈段结束

12:CODE SEGMENT PARA ‘CODE ’;定义代码段

13:ASSUME CS:CODE,DS:DA T,SS:STAC

14:MAIN PROC FAR ;定义过程,过程名为:MAIN,属性:FAR 远过程

15:PUSH DS ;保护操作系统当前的数据段指针DS(即现场)以便执行

16:MOV AX,0 ;完用户程序后恢复。即实际恢复指针时为DS:00

17:PUSH AX

18:MOV AX,SEG DA TA ;获取DA TA的段基址

19:MOV DS,A X ;建立用户的数据段基址;以下为增加的内容

MOV DL,0DH ;回车命令CR的A SCII码,见P458 ASCII码字符表

MOV AH,02 ;建立功能号。显示(输出)单字符,发回车命令

INT 21H ;执行系统功能调用将CRT的当前光标位回到本行起点

MOV DL,0AH ;换行命令LF的ASCII码

MOV AH,02 ;建立功能号。显示(输出)单字符,发换行命令

INT 21H ;执行系统功能调用将CRT的光标移动到下一行

20:LEA DX,MESG ;LEA指令见P118,也可采用下面的指令:

;MOV DX,OFFSET MESG

21:MOV AH,09 ;建立功能号。输出显示字符串

22:INT 21H ;执行系统功能调用将提示符在CRT当前光标位置显示出来

23:MOV BX,OFFSET BUF ;建立考试成绩数据区指针

24:MOV CX,10 ;建立循环控制计数器

25:MOV AH,0 ;大于等于90分人数统计计数器清0

26:MOV DH,0 ;小于60分人数统计计数器清0

27:MOV DL,0 ;60-89分人数统计计数器清0,或MOV DX,0

28:GOON:MOV AL,[BX] ;从考试成绩数据区取出一个成绩

29:CMP A L,60 ;判断是否小于等于60分

30:JGE BEGR ;JGE大于或等于指令见P133表5—10(或用JNC)

31:ADD DH, 1 ;小于60分的统计计数器加1

DAA ;将计数结果调整为十进制数,若超过9人则原程序中需要增加的语句

32:JMP AGAIN

33:BEGR:CMP AL,90 ;判断是否大于等于90分

34:JGE EQUL ;当操作数为无符号数时也可使用JNC指令

35:ADD DL, 1 ;60-89分的统计计数器加1

DAA ;将计数结果调整为十进制数,若超过9人则原程序中需要增加的语句

36:JMP AGAIN

37:EQUL:ADD AH, 1 ;大于等于90分的统计计数器加1

DAA ;将计数结果调整为十进制数,若超过9人则原程序中需要增加的语句

38:AGAI N:INC BX;调整数据指针

39:LOOP GOON

40:AND DH,0FH ;分离出低4位

41:ADD DH,30H ;转换成ASCII码

42:MOV XX,DH ;存放小于60分的统计结果

43:AND DL,0FH ;分离出低4位

44:ADD DL,30H ;转换成ASCII码(注:原语句错为ADD AH,30H)

45:MOV XX+2,DL ;存放60-89分的统计结果,两数据之间空一格

46:AND AH,0FH ;分离出低4位

47:ADD AH,30H ;转换成ASCII码

48:MOV XX+4,AH ;存放大于等于90分的统计结果,两数据之间空一格

49:MOV DX,OFFSET XX ;建立入口参数

50:MOV AH,09 ;建立功能号

51:INT 21H ;执行系统功能调用:显示字符串

52:RET

53:MAIN ENDP;过程结束

54:CODE ENDS;代码段结束

55:END MAIN ;程序模块结束

;程序运行后屏幕上的显示结果为:THE RESUL T IS:<60 60-90 >90 3 4 3

第8章输入/输出接口

本章学习重点和要求:

1、计算机输入输出接口的功能、作用和常用控制方式。

2、串、并行通信的作用和特点。

3、可编程并行输入输出接口芯片8255A在计算机系统中的主要作用和用

途、功能特点、工作原理、工作方式、主要内部结构、外部特性及其与系统的连接、控制字及初始化编程。

4、可编程并行输入输出接口芯片8255A工作方式0的应用。(按键和LED

数码显示器的工作原理,与计算机的连接和管理程序的设计方法。)

8.1微型计算机的输入输出接口

补充:关于接口的基本概念和技术术语:

1、什么是接口:CPU和I/O外设或部件之间,CPU和存储器之间,各功能

部件之间,系统与系统之间等的连接界面称之为接口。(即信息或数据交换双方的连接界面或必经之路。)本课程的主要内容和重点是讨论CPU和I/O外设或部件之间的接口技术。

2、为什么要用接口:由于外设的多样化和特殊性使得CPU无法与其将直

接连接并对其进行识别或控制(例如:CPU无法直接对交通信号灯进行控制,CPU也无法直接测量温度,CPU的信息或数据也无法直接放到网线上进行传输等),而须借助于其它相关的电路或部件才能对其进行识别或控制。

3、接口的作用:协助CPU实现CPU与I/O外设之间的信息交换。

4、接口的位置:介于CPU与I/O外设之间。(即CPU—接口—I/O外设)

5、I/O接口电路的主要任务和功能:

(1)对外设进行寻址或译码。(即:进行I/O地址译码或设备选择)

(2)数据输入输出功能:暂存CPU的数据提供给外设或暂存外设的数

据提供给CPU.

(3)进行数据或信息格式转换或匹配功能。进行信息格式或信息类型

上的匹配。例如:串—并转换、A/和D/A转换或电平匹配等。

(4)进行中断管理:对中断源进行识别和登记、进行优先级判断,对中

断源进行屏蔽,向CPU提供中断类型码或中断向量等。

(5)进行速度或时序上的匹配。CPU在与低速存储器或I/O外设进行

信息交换时,一般都要借助于接口电路来进行时序或速度上的协调。即利用等待信号、忙信号、准备好信

号或中断请求信号等先进行确认然后再进行信息交换。

(6)联络功能:提供双方在进行信息交换时所需要的状态或确认信号。

(7)可编程功能:能够利用控制命令设置或修改接口电路的功能,工

作方式或输入输出方向等。

6、接口的组成:接口电路+驱动程序

(1)接口电路:实现CPU和I/O外设或部件之间,系统与系统之间以

及各功能部件之间等,进行信息或数据交换所必需的全部电路称之为接口电路。这些电路一般包括:数据

端口、状态端口、控制信号和I/O地址译码电路等

(2)接口控制程序:控制或实现双方进行信息或数据交换的控制程序

称为接口控制程序或驱动程序。

(3)接口电路的设计方法:

a、采用普通数字逻辑集成电路I.C进行设计:

利用数据锁存器、三态缓冲器、D触发器、译码器和与非门等

其设计内容包括:数据输入输出寄存器,状态寄存器、控制寄存器、I/O地址译码电路和其它辅助控制电

路等。特点:成本低但电路复杂,灵活性差无法进行扩展或升级等。一般适用于功能比较简单的接口电路

的设计。

b、采用可编程输入/输出接口电路芯片进行设计:

利用可编程的I/O接口电路:8255、8253、8251、8259等

其设计内容包括:由于可编程输入/输出接口电路芯片内部已经集成了数据输入/输出寄存器,状态寄存器、

控制寄存器等,使接口电路的设计大大简化,只需进行芯片与CPU或系统的连接以及I/O地址译码电路和

其它简单辅助控制电路的设计即可。特点:成本较高,但灵活性好且便于扩展或升级。是当前比较常用的

设计方法。

(4)驱动程序的设计方法:可采用汇编语言或高级语言

7、接口设计中所要解决的问题:如何根据外设的特点或要求进行数据端

口、状态端口、控制信号、I/O地址译码电路和控制程序的设计。

8.1.1、输入输出接口电路中交换信号的类型

(1)数字量:一般为二进制形式的数据,可以是1位或多位,每8位

称为一个字节。

(2)模拟量:随时间连续变化的量。电流、电压、温度等。计算机不

能直接接收或控制模拟量,必须要进行A/D或D/A转换。

(3)开关量:具有逻辑或电平状态的信号。如电器开、关,阀门开、

闭等。

(4)脉冲量:将持续时间相对较短的逻辑信号称之为脉冲量。例如信

号发生器或时钟振荡器所产生的信号,发动机在旋转时由转速传感器所发出的信号等。

8.1.2、计算机中常用的输入输出方式和输入输出控制方式:

将计算机或CPU在输入输出过程中每次I/O所传送的二进制数据位的不

同称之为输入输出方式。

(1)并行输入/输出:特点:一次多位,速度快,效率高,但占用信号

线或传输线多,不便于远距离传输。

(2)串行输入/输出:特点:一次1位,速度和效率都低于并行方式,

但占用信号线或传输线少,便于远距离传输。串行通信数据格式

为:1位低电平起始位+5—8数据位+奇偶校验位(可省)+高电平停止位

而将如何控制这个输入输出过程的方法称之为输入输出控制方式.计算

机中常用的输入输出控制方式有以下几种:本课程重点讨论前2种方式

(1)程序控制方式:无条件输入输出控制方式和条件输入输出控制方

式。

(2)中断控制方式

(3)DMA控制方式

(4)I/O处理机控制方式

8.1.3、CPU访问外设的过程和步骤:

(1)确定访问对象或I/O外设:利用I/O译码电路对全部I/O外设进

行编址。

(2)确认访问对象或外设的工作状态:利用双方所提供的状态或联络

信号。

(3)进行信息或数据的交换(即进行信息或数据的输入输出)。利用数

据输入输出端口。

8.1.4、常用输入输出控制方式概述:见P196 8.1.2

(一)程序控制方式

1、无条件输入输出传送控制方式:

(1)适用范围:外设在CPU进行访问时必须随时都能处在准备

好状态。

例如:LED显示器。但打印机则不能采用该方式!

(2)接口电路组成:见P197图8-1

数据输入输出端口+ I/O地址译码 + 访问控制信号:IOR、IOW

(3)控制程序:无条件的数据输入输出程序。

2、条件输入输出传送控制方式(即查询方式):

(1)适用范围:用于传送双方必须要先进行状态确认后才能进

行信息交换或输入输出的系统或场合。

例如:对打印机外设的控制可采用该方式。

(2)接口电路组成:见P197图8-2(输入)和P198图8-3(输出)

数据输入输出端口+ I/O地址译码 + 访问控制信号:IOR、IOW+状态端口

(3)控制程序:

状态查询程序 + 数据输入输出程序。

(一)中断控制方式

(1)适用范围:用于要求对随机或突发事件能够进行实时、高效处理的系统。用于要求能够实时和高效的对随机或突发事件进行处理的系统

(2)接口电路组成:见P197图8-1

数据输入输出端口+ I/O地址译码 + 访问控制信号+中断控制接口电路

(3)控制程序:

主程序(建立中断向量表、开CPU中断)+ 中断服务子程序

例:已知打印机外设的I/O地址为378H,中断类型号为:25H,打印数据输出采用中断控制方式,即利用打印机的状态信号BUSY(BUSY=1时为打印机忙,BUSY=0时打印机空闲)向CPU发出中断申请,打印数据区起始地址为P_BUF,打印机中断服务子程序的入口地址(即存放中断服务子程序的起始地址)为:2000H:5000H,试对其建立中断向量表,并编写出中断服务子程序的相关程序。

;在主程序中建立中断向量表程序语句如下:

MOV AX,5000H ;取中断服务子程序入口地址的偏移地址

MOV WORD PTR[25HX4],AX ;将中服入口偏移地址送中断向量表

MOV AX,2000H ;取中服入口地址段地址

MOV WORD PTR[25HX4+2],AX ;将中服入口段地址送中断向量表

MOV SI, P_BUF ;建立打印数据区指针

MOV AL,[SI] ;取出第1个打印数据在主程序中输出以便启动

;打印过程,否则无法产生后续中断!

INC SI;调整数据指针

MOV DX,378H ;指向打印机外设地址

OUT DX, AL ;向打印机输出数据

STI;开CPU中断

………………………;执行其它任务或程序

中断服务子程序中的有关内容

ORG 5000H

PUSH AX ;保护现场

PUSH DX ;保护现场

MOV AL,[SI] ;取出打印数据

CMP A L,‘$’;判断是否结束符

JNZ NEXT

CLI ;关CPU中断

JMP END

NEXT INC SI;调整数据指针

MOV DX,378H ;指向打印机外设地址

OUT DX, AL ;向打印机输出数据

END POP DX ;回复现场

POP AX ;回复现场

IRET ;从中断返回

8.2 并行通信与并行接口

8.2.1并行通信接口的主要组成结构:

数据输入输出寄存器 + 状态寄存器 + 控制寄存器(用来存放控制命令)

输入过程:先送数据再产生输入数据准备好状态信号以便供CPU查询。

输出过程:先送数据再产生输出数据准备好状态信号(或选通信号)通知外设使用。

8.3 可编程并行通信接口芯片8255A

可编程:可利用控制代码或命令对其功能、工作方式或输入/输出方向进行设置或选择的I.C集成电路芯片或部件,都可称之为可编程的I.C或部件。

8.3.1 8255A的主要功能和作用:

协助CPU完成并行数据的输入/输出。内部具有3个双向并行I/O

口,具有3种工作方式,2个编程命令,用户可以访问的工作寄

存器有4个:端口A、端口A、端口A和控制寄存器,其工作方

式和输入/输出方向都可利用控制字或编程命令进行设置或修

改。可直接支持程序控制方式的输入/输出。

8.3.2 8255A的主要内部结构:见P201图8-5

由数据总线缓冲器、读写控制部件、3个8位双向数据端口:A

口、B口和C口组成。其中用户可以访问的工作寄存器为:端口

A、B、C的数据寄存器和8255的控制寄存器。

8.3.3 8255A的主要外部特性、引脚信号(见P201图8-6)以及与CPU

或系统的连接:

40引脚V.L.S.I(超大规模集成电路),DIP封装,其中与外设连

接的引脚有24条:PA0—PA7+PB0—PB7+PC0—PC7,与系统连接

的引脚有16条:8条数据线+2条电源线+6条控制信号线:RD、

WR、A1、A0、RESET、CS ,各控制信号与系统的连接说明如下:

1、RD:接系统的IOR,WR:接系统的IOW 。

2、RESET:复位信号,可以直接与系统或CPU的RESET信号连接。

3、A1、A0:8255内部工作寄存器选择,一般接系统地址信号线

的A2和A1,采用字对准方式,访问时可只使用偶数地址!

4、CS:8255的片选控制信号,接I/O地址译码器与分配给8255

的工作地址相对应的输出端。

5、8255的数据线可以直接与系统的低8位数据线连接。(如果只

使用奇数地址访问8255时则应将8255的数据线与系统的高8

位数据线相连接!)

8255的控制信号与读写访问操作:见P202 表8—1

CS A1 A0 RD WR 访问操作说明

0 0 0 0 1 CPU读8255端口A的数据寄存器

0 0 1 0 1 CPU读8255端口B的数据寄存器

0 1 0 0 1 CPU读8255端口C的数据寄存器

0 1 1 0 1 非法操作!

0 0 0 1 0 CPU向8255端口A数据寄存器输出数据

0 0 1 1 0 CPU向8255端口B数据寄存器输出数据

0 1 0 1 0 CPU向8255端口C数据寄存器输出数据

0 1 1 1 0 CPU向8255端口控制寄存器输出控制字!

1 X X X X 8255未选中,不工作!数据总线浮空!

8.3.4 8255A的控制字和初始化编程

1、8255工作方式控制字:

a、字长:8位,编程位:7位(D0-D6),1位标志位:D7=1

b、作用:用于设置8255A各端口的工作方式和输入输出方向。

c、工作方式控制字格式如下:

2、C口置位/复位控制字该命令只对C口有效!

微机原理重点考试习题Chapter 3

第3章 80x86微处理器 一、自测练习题 ㈠选择题 1.因为8086 CPU的字数据既可以存放在内存的偶地址单元,也可以安排在奇地址单元,所以其堆栈指针SP( )。 A.最好指向偶地址单元 B.可以指向任何地址单元 C.只能指向偶地址D.只能指向奇地址 2.8086/8088微处理器内部能够计算出访问内存储器的20位物理地址的附加机构是( )。 A.ALU B.加法器C.指令队列 D.内部通用寄存器3.8086CPU外部的数据总线和地址总线分别为( )位。 A.16,16 B.20,16 C.16,20 D.20,20 4.指令代码的地址存放在寄存器( )中。 A.DS和SI B.BX和BP C.ES和DI D.CS和IP 5.最大方式中,控制总线的信号来自( )。 A.8282 B.8284 C.8288 D.8286 6.在8086中,一个基本的总线周期由( )个时钟周期组成。 A.1 B.2 C.3 D.4 7.在8086CPU中,数据地址引脚( )采用时分复用。 A.AD0~AD15 B.AD0~AD9 C.AD0~AD20 D.AD10~AD2 8.8086CPU把1MB空间划分为若干逻辑段,每段最多可含( )的存储单元。 A.1KB B.8KB C.16KB D.64KB 9.当标志寄存器FLAGS中OF位等于1时,表示带有符号的字运算超出数据( )范围。 A.-128~+127 B.-32768~+32767 C.000~FFFFH D.0~FFH 10.总线写周期中,在( )时不需要像读周期时要维持一个周期的浮空状态以作缓冲。 A.-32767~+32767 B.-32767~+32768 C.-32768~+32767 D.-32766~+32769 11.CPU执行指令过程中,BIU每完成一次对存储器或I/O端口的访问过程,称为( )。 A.时钟周期 B.总线周期 C.总线读周期 D.总线写周期 12.BHE与A0配合以决定访问存储器的数据是高字节还是低字节工作,其BHE仅在总线周期开始的( )周期有效。 A.T1 B.T2 C.T3 D.T4 13.最小方式下原8086微处理器最大方式下S2、S1、S0引脚应改为( )。 A.M/IO、DEN、DT/R B.DT/R、M/IO、DEN C.M/IO、DT/R、DEN D.DEN、M/IO、DEN 14.最大方式下引脚25号和24号分别为QSo和QSl,若工作于最小方式下则分别为( )。 A.INTA和ALE B.ALE和INTA C.TEST和INTA D.DEN和ALE 15.复位时,由于( )被清零,使从INTR输入的可屏蔽中断就不能被接受。 A.标志寄存器B.通用寄存器C.暂存寄存器 D.内部通用寄存器

微机原理与接口技术知识点复习总结汇编

第一章计算机基础知识 本章的主要内容为不同进位计数制计数方法、不同进位制数之间相互转换的方法、数和字符在计算机中的表示方法、简单的算术运算以及计算机系统的组成。下边将本章的知识点作了归类,图1为本章的知识要点图,图1.2为计算机系统组成的示意图。 本章知识要点 数制 二进制数(B) 八进制数(Q) 十六进制数(H) 十进制数(D) B) 码制 带符号数编码 奇偶校验码 字符编码 原码 反码 补码 ASCII码 BCD码 压缩BCD码 非压缩BCD码计算机系统组成 计算机系统组成硬件 主机 外部设备 中央处理器(CPU) 半导体存储器 控制器 运算器 ROM RAM 输入设备 输出设备 软件 系统软件 应用软件 操作系统:如DOS、Windows、Unix、Linux等 其他系统软件 用户应用软件 其他应用软件 各种计算机语言处理软件:如汇编、解释、编译等软件

第二章8086微处理器 本章要从应用角度上理解8086CPU的内部组成、编程结构、引脚信号功能、最小工作模式的系统配置、8086的存储器组织、基本时序等概念。下面这一章知识的结构图。 本章知识要点 Intel 8086微处理器 时钟发生器(8284) 地址锁存器(74LS373、8282) 存储器组织 存储器逻辑分段 存储器分体 三总线(DB、AB、CB) 时序 时钟周期(T状态) 基本读总线周期 系统配置 (最小模式) 8086CPU 数据收发器(8286、74LS245) 逻辑地址物理地址 奇地址存储体(BHE) 偶地址存储体(A0) 总线周期指令周期 基本写总线周期 中断响应时序 内部组成 执行单元EU(AX、BX、CX、DX、SP、BP、SI、DI、标志寄存器) 总线接口单元BIU(CS、DS、SS、ES、IP) 地址/数据 控制 负责地址BHE/S7、ALE 引脚功能(最小模式)地址/状态 数据允许和收发DEN、DT/R 负责读写RD、WR、M/IO 负责中断INTR、NMI、INTA 负责总线HOLD、HLDA 协调CLK、READY、TEST 模式选择MN/MX=5V

微机原理及接口技术考试各章重点题库及答案

微机原理与接口技术试题库 第一章基础知识 一、填空 1、计算机中采用二进制数,尾符用B 表示。 2、西文字符的编码是ASCII 码,用 1 个字节表示。 3、10111B用十六进制数表示为H,八进制数表示为O。 4、带符号的二进制数称为真值;如果把其符号位也数字化,称为原码。 5、已知一组二进制数为-1011B,其反码为10100B ,其补码为10101B 。 6、二进制码最小单位是位,基本单位是字节。 7、一个字节由8 位二进制数构成,一个字节简记为1B ,一个字节可以表示256 个信息。 8、用二进制数表示的十进制编码,简称为BCD 码。 9、8421码是一种有权BCD 码,余3码是一种无权BCD 码。 二、选择 1、计算机中采用 A 进制数。 A. 2 B. 8 C. 16 D. 10 2、以下的 C 编码是一种有权码。 A. 循环码 B. BCD码 C. 8421码 D. 余3码 3、八进制数的尾符是 B 。 A. B B. O C. D D. H 4、与十进制数254等值的数是 A 。 A. 11111110 B. 11101111 C. 11111011 D. 11101110 5、下列不同数制表示的数中,数值最大的是 C 。 A. 11011101B B. 334O C. 1219D D. DAH 6、与十六进制数BC等值的数是B 。 A. 10111011 B. 10111100 C. 11001100 D. 11001011 7、下列字符中,ASCII码值最小的是 A 。 A. K B. Y C. a D. i 8、最大的10位无符号二进制整数转换成十进制数是C 。 A. 51 B. 512 C. 1023 D. 1024 9、A的ASCII码值为65D,ASCII码值为68D的字母是C 。 A. B B. C C. D D. E 10、下列等式中,正确的是 D 。 A. 1KB=1024×1024B B. 1MB=1024B

微机原理知识点汇总

微机原理知识点汇总

————————————————————————————————作者:————————————————————————————————日期:

微机原理复习总结 第1章基础知识 ?计算机中的数制 ?BCD码 与二进制数11001011B等值的压缩型BCD码是11001011B。 F 第2章微型计算机概论 ?计算机硬件体系的基本结构 计算机硬件体系结构基本上还是经典的冯·诺依曼结构,由运算器、控制器、存储器、输入设备和输出设备5个基本部分组成。 ?计算机工作原理 1.计算机由运算器、控制器、存储器、输入设备和输出设备5个基本部分组成。 2.数据和指令以二进制代码形式不加区分地存放在存储器重,地址码也以二进制形式;计算机自动区 分指令和数据。 3.编号程序事先存入存储器。 ?微型计算机系统 是以微型计算机为核心,再配以相应的外围设备、电源、辅助电路和控制微型计算机工作的软件而构成的完整的计算机系统。 ?微型计算机总线系统 数据总线 DB(双向)、控制总线CB(双向)、地址总线AB(单向); ?8086CPU结构 包括总线接口部分BIU和执行部分EU BIU负责CPU与存储器,,输入/输出设备之间的数据传送,包括取指令、存储器读写、和I/O读写等操作。 EU部分负责指令的执行。 ?存储器的物理地址和逻辑地址 物理地址=段地址后加4个0(B)+偏移地址=段地址×10(十六进制)+偏移地址 逻辑段: 1). 可开始于任何地方只要满足最低位为0H即可 2). 非物理划分 3). 两段可以覆盖 1、8086为16位CPU,说明(A ) A. 8086 CPU内有16条数据线 B. 8086 CPU内有16个寄存器 C. 8086 CPU内有16条地址线 D. 8086 CPU内有16条控制线 解析:8086有16根数据线,20根地址线; 2、指令指针寄存器IP的作用是(A ) A. 保存将要执行的下一条指令所在的位置 B. 保存CPU要访问的内存单元地址 C. 保存运算器运算结果内容 D. 保存正在执行的一条指令 3、8086 CPU中,由逻辑地址形成存储器物理地址的方法是(B ) A. 段基址+偏移地址 B. 段基址左移4位+偏移地址 C. 段基址*16H+偏移地址 D. 段基址*10+偏移地址 4、8086系统中,若某存储器单元的物理地址为2ABCDH,且该存储单元所在的段基址为2A12H,则该

微机原理重点必看

2.1 8086CPU 具有 20 条地址线,可直接寻址 1MB 容量的内存空间,在访问 I/O端口时,使用地址线 16条,最多可寻址 64K 个I/O端口。 2.2 8086CPU 的内部结构有何特点?由哪两部分组成?它们的主要功能是什么? 【解答】8086微处理器是典型的16位微处理器,HMOS 工艺制造,集成了2.9万只晶体管,使用单一的+5V电源,有16根数据线和20根地址线;通过其16位的内部数据通路与设置指令预取队列的流水线结构结合起来而获得较高的性能。 8086微处理器内部安排了两个逻辑单元,即执行部件EU 和总线接口部件BIU 。EU 主要负责指令译码、执行和数据运算,包括计算有效地址;BIU 主要完成计算物理地址、从内存中取指令、实现指令规定的读/写存储器或外部设备等信息传输类操作。 2.8 解释逻辑地址、偏移地址、有效地址、物理地址的含义,8086存储器的物理地址是如何形成的?怎样进行计算? 【解答】逻辑地址:表示为段地址:偏移地址,书写程序时用到,一个存储单元可对应出多个逻辑地址; 偏移地址:是某一存储单元距离所在逻辑段的开始地址的字节个数。 有效地址:是指令中计算出的要访问的存储单元的偏移地址。 物理地址:是CPU 访问存储器时用到的20位地址,是存储单元的唯一的编号。物理地址计算公式:物理地址 = 段地址×10H +有效地址(或偏移地址) 2.10 I/O端口有哪两种编址方式,各自的优缺点是什么? 【解答】I/O端口有两种编址方式:统一编址和独立编址。

统一编址方式是将I/O端口与内存单元统一起来进行编号,即包括在1MB 的存储器空间中,看作存储器单元,每个端口占用一个存储单元地址。该方式主要优点是不需要专门的I/O指令,对I/O端口操作的指令类型多;缺点是端口要占用部分存储器的地址空间,不容易区分是访问存储器还是外部设备。 独立编址的端口单独构成I/O地址空间,不占用存储器地址。优点是地址空间独立,控制电路和地址译码电路简单,采用专用的I/O指令,使得端口操作的指令在形式上与存储器操作指令有明显区别,程序容易阅读;缺点是指令类别少,一般只能进行传送操作。 2.12 在内存有一个由20个字节组成的数据区,其起始地址为1100H:0020H。计算出该数据区在内存的首末单元的实际地址。 【解答】逻辑地址1100H:0020H对应的物理地址为PA=1100H×10H +0020H= 11020H,即该数据区在内存中的首单元的物理地址为11020H ;因为存储空间中每个字节单元对应一个地址,所以20个字节对应20个地址,则该数据区在内存中的末单元的物理地址PA = 11020H +20D = 11020H+14H = 11034H。 3.4 分析下列指令的正误,对于错误的指令要说明原因并加以改正。 (1 MOV AH ,BX (2 MOV [BX],[SI] (3 MOV AX ,[SI][DI] (4 MOV MYDAT[BX][SI],ES :AX (5 MOV BYTE PTR[BX],1000 (6 MOV BX,OFFSET MAYDAT[SI] (7 MOV CS ,AX (8 MOV DS,BP 【解答】 (1 MOV AH ,BX 错误,寄存器类型不匹配,可改为MOV AX,BX

微机原理知识点总结

第一章概述 1.IP核分为3类,软核、硬核、固核。特点对比 p12 第二章计算机系统的结构组成与工作原理 1. 计算机体系结构、计算机组成、计算机实现的概念与区别。P31 2. 冯·诺依曼体系结构: p32 硬件组成五大部分 运算器、存储器、控制器、输入设备、输出设备,以存储器为中心 信息表示:二进制计算机内部的控制信息和数据信息均采用二进制表示,并存放在同一个存储器中。 工作原理:存储程序/指令(控制)驱动编制好的程序(包括指令和数据)预先经由输入设备输入并保存在存储器中 3.接口电路的意义 p34 第二段 接口一方面应该负责接收、转换、解释并执行总线主设备发来的命令,另一方面应能将总线从设备的状态或数据传送给总线主设备,从而完成数据交换。 4.CPU组成:运算器、控制器、寄存器。P34 运算器的组成:算术逻辑单元、累加器、标志寄存器、暂存器 5.寄存器阵列p35 程序计数器PC,也称为指令指针寄存器。存放下一条要执行指令的存放地址。 堆栈的操作原理应用场合:中断处理和子程序调用 p35最后一段 6. 计算机的本质就是执行程序的过程p36 7. 汇编语言源程序——汇编——>机器语言程序 p36 8. 指令包含操作码、操作数两部分。执行指令基本过程:取指令、分析指令、执行指令。简答题(简述各部分流程)p37 9. 数字硬件逻辑角度,CPU分为控制器与数据通路。P38 数据通路又包括寄存器阵列、ALU、片上总线。 10. 冯·诺依曼计算机的串行特点p38 串行性是冯·诺依曼计算机的本质特点。表现在指令执行的串行性和存储器读取的串行性。也是性能瓶颈的主要原因。 单指令单数据 11. CISC与RISC的概念、原则、特点。对比着看 p39、40

微机原理常考知识点

1、必须注意,不能用一条MOV指令实现以下传送: ①存储单元之间的传送。 ②立即数至段寄存器的传送。 ③段寄存器之间的传送。 2、ORG 表示将逻辑地址搬移至某一地方 OFFSET表示数组的偏移量(首地址) JNZ 非零跳转 JB 小于跳转 JA 大于跳转 LOOP 无条件跳转 WORD PTR的作用类似于OFFSET ROL 左移 ROR 右移 3、程序书写的一般格式: STACK SEGMENT DW 64 DUP(?) STACK ENDS DA TA SEGMENT DB:一个字节DW:两个字节DQ:四个字节 ORG .... DA TA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE DS:DA TA SS:STACK MOV AX DATA MOV DS AX MOV CX X(循环次数,可以是立即数,可以是DATA域内定义的一个常数) MOV DI OFFSET NAME(将定义的数组的首地址放入到SI或DI寄存器中用与后续的循环) ... MOV AH 4CH INT 21H MAIN ENDP CODE ENDS END MAIN 在进行运算的过程过程中,需要根据运算数是DB还是DW对寄存器进行选择是AL还是AX。 4、8086的寻址方式:

寄存器寻址、立即寻址、直接寻址、寄存器间接寻址、基址相对寻址、变址相对寻址、基址变址相对寻址 5、各个寄存器的功能: CX用于存储循环次数、AX用于各种运算和CPU与接口的数据交换、BX用来存放地址 注意寄存器的清零(一般是对AX寄存器清零,因为需要使用该寄存器进行各项运算) 6、如何处理加法过程中的进位问题。 第四章PPT 43页开始 方法一:如果有进位,AH加1 方法二:使用ADC指令 小写转大写程序 压缩BCD和非压缩BCD码的程序 7、冯诺依曼体系: 1.计算机由运算器、存储器、控制器、输入、输出设备五大部件组成; 2.程序和数据均以二进制的形式存储在存储器中,存储的位置由地址码指定,地址码也是二进制形式的; 3.控制器是根据存放在存储器中的指令序列(即程序)控制的,并由程序计数器控制指令的执行。

微机原理重点内容

1、指出源操作数的寻址方式 ⑴ MOV BX,2000H ;立即数寻址 ⑵ MOV BX,[2000H];直接寻址 ⑶ MOV BX,[SI];寄存器间接寻址 ⑷ MOV BX,[SI+2000H] ;寄存器相对寻址 ⑸ MOV [BX+SI],AL ;寄存器寻址 ⑹ ADD AX,[BX+DI+80] ;基址变址相对寻址 ⑺ MUL BL ;寄存器寻址 ⑻ JMP BX ;段内间接寻址 ⑻ SUB AX, BX ;寄存器寻址 ⑼ IN AL,DX ;端口间接寻址 ⑽ INC WORD PTR [BP+10H] ;寄存器相对寻址 ⑾ MOV CL,LENGTH V AR ;立即数寻址 ⑿ MOV BL,OFFSET V AR1 ;立即数寻址 2、指出下列指令是否正确 (1) MOV DS,0100H;错误。源操作数是立即数时,目的操作数不能是段寄存器 (2) MOV BP,AL;错误。操作数类型不一致 (3) XCHG AH,AL ;正确。 (4) OUT 310H,AL;错误。端口直接寻址的范围应在0~FFH之间 (5) MOV BX,[BX] ;正确。 (6) MOV ES:[BX+DI] ,AX ;正确。 (7) MOV AX,[SI+DI] ;错误。存储器寻址中有效地址不能由两个变址寄存器组成 (8) MOV SS:[BX+SI+100H],BX ;正确。 (9) AND AX,BL ;错误。操作数类型不一致 (10) MOV DX,DS:[BP] ;正确 (11) ADD [SI],20H ;错误,目的操作数类型不明确。 (12) MOV 30H,AL ;错误,目的操作数不能为立即数 (13) PUSH 2000H;错误。堆栈指令的操作数不能是立即数 (14) MOV [SI],[2000H];错误。两个操作数不能同时为存储器操作数 (15) MOV SI,AL ;错误。操作数类型不一致 (16) ADD [2000H],20H;错误,目的操作数类型不明确 (17) MOV CS,AX;错误,目的操作数不能为代码段寄存器 (18) INC [DI] ;错误,目的操作数类型不明确 (19) OUT BX,AL;错误。端口间接寻址的寄存器只能是DX寄存器 (20) SHL BX,3 ;错误。移位次数大于1时应该用CL寄存器 (21) XCHG CX,DS ;错误。交换指令中不能出现段寄存器 (22) POP AL ;错误。堆栈指令的操作数只能是字操作数(即16位操作数) 3. 写出下列指令中存储器操作数物理地址的计算表达式: 1)MOV AL, [DI] (DS)×10H + ( DI ) 2)MOV AX, [BX+SI] (DS)×10H + ( BX ) + (SI) 3)MOV 5[BX+DI],AL (DS)×10H + ( BX ) + (DI) + 5 4)ADD AL, ES:[BX] (ES)×10H + ( BX ) 5)SUB AX, [1000H] (DS)×10H + 1000H

微机原理复习知识点总结资料

微机原理复习知识点 总结

1.所谓的接口其实就是两个部件或两个系统之间的交接部分(位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路)。 2.为了能够进行数据的可靠传输,接口应具备以下功能:数据缓冲及转换功能、设备选择和寻址功能、联络功能、接收解释并执行CPU命令、中断管理功能、可编程功能、(错误检测功能)。 3.接口的基本任务是控制输入和输出。 4.接口中的信息通常有以下三种:数据信息、状态信息和控制信息。5.接口中的设备选择功能是指: 6.接口中的数据缓冲功能是指:将传输的数据进行缓冲,从而对高速工作的CPU与慢速工作的外设起协调和缓冲作用,实现数据传送的同步。 7.接口中的可编程功能是指:接口芯片可有多种工作方式,通过软件编程设置接口工作方式。 8.计算机与外设之间的数据传送有以下几种基本方式:无条件传送方式(同步传送)、程序查询传送(异步传送)、中断传送方式(异步传送)、DMA传送方式(异步传送)。 9.根据不同的数据传输模块和设备,总线的数据传输方式可分为无条件传输、程序查询传送方式、中断传送方式、DMA方式。 10.总线根据其在计算机中的位置,可以分为以下类型:片内总线、内部总线、系统总线、局部总线、外部总线。 11.总线根据其用途和应用场合,可以分为以下类型:片内总线、片间总线、内总线、外总线。ISA总线属于内总线。 12.面向处理器的总线的优点是:可以根据处理器和外设的特点设计出最适合的总线系统从而达到最佳的效果。 13. SCSI总线的中文名为小型计算机系统接口(Small Computer System Interface),它是 芯的信号线,最多可连接 7 个外设。 14. USB总线的中文名为通用串行接口,它是4芯的信号线,最多可连接127个外设。 15. I/O端口的编码方式有统一编址和端口独立编址。访问端口的方式有直接寻址和间接寻址。PC机的地址由16位构成,实际使用中其地址范围为000~3FFH。 16.在计算机中主要有两种寻址方式:端口独立编址和统一编址方式。在端口独立编址方式中,处理器使用专门的I/O指令。 17. 74LS688的主要功能是:8位数字比较器,把输入的8位数据P0-P7和预设的8位数据Q0-Q7进行比较。如果相等输d出0,不等输出1。 主要功能:把输入的8位数据P0-P7和预设的8位数据Q0-Q7进行比较,比较的结果有三种:大于、等于、小于。通过比较器进行地址译码时,只需把某一地址范围和预设的地址进行比较,如果两者相等,说明该地址即为接口地址,可以开始相应的操作。 18. 8086的内部结构从功能上分成总线接口单元BIU和执行单元EU两个单元。 19. 8086有20地址线,寻址空间1M,80286有24根地址线,寻址空间为 16M。 20. 8086/8088有两种工作模式,即最大模式、最小模式,它是由MNMX 决定的。

微机原理及应用课程复习要点

微机原理及应用课程复习要点 第一章微型计算机概述 1.微型计算机的基本组成(CPU 、存储器、I/O接口、总线),各自的主要功能。 2.微型计算机的特点与工作过程。 3.总线的作用;控制总线、数据总线、地址总线(方向、状态、条数、作用) 总线的分类(片内、局部、系统、通信)与规范(机械结构、功能结构、电气) 4.8088/8086微处理器的编程结构(分为执行部件、总线接口部件,各自的功能以及两者的动作协调) 5.8088/8086微处理器的内部寄存器。AX、BX、CX、DX、DI、SI;(一般用在什么场合?)指针:CS、IP、SP,它们的作用是什么? 6.标志寄存器含六个状态标志(重点CF、ZF)、三个控制标志(重点IF),起什么作用? 7.存储器组织:(分段结构、物理地址的确定),物理地址的确定:段地址左移四位加上偏移地址 8.8088/8086微处理器的引脚及其功能(三总线、复用线、有效电平) 9.8088/8086微处理器的工作模式:(最大模式、最小模式),什么是最大模式与最小模式,它们的区别(包括系统配置、控制信号线由谁产生等)。10.什么是时序?分清几个重要概念:指令周期、总线周期、时钟周期) 11.8088/8086微处理器的基本操作有哪些? 12.典型时序分析:(存储器读写、I/O读写、中断响应、复位)

第二章指令系统 1.寻址方式:(六种寻址方式),源操作数、目的操作数的存储位置(CPU内、存储器)。 2.指令格式:(标识符、操作数、操作码、注释) 3.掌握指令的要点:(助记符、格式、功能、操作数的个数、对标志位的影响) 4.选择指令注意点:(数据从哪来、结果放到哪去、区分字与字节操作、默认的寄存器)。 5.传送指令、运算指令、程序控制指令的测重点:(数据的方向、标志位的状态、程序的方向) 6.移位指令:(左移、右移、逻辑、算术、循环、非循环、移位的次数) 7.程序控制指令:(无条件、条件、调用、中断) 8.十进制数运算方法:(先利用二进制运算指令、再进行十进制调整) 第三章汇编语言程序设计 1.汇编语言的基本要素:(语句格式、运算符、表达式) 2.汇编语言的运算符:(算术、取值、属性) 选用运算符注意点:(操作数、结果、有意义的运算符) 以及运算符与助记符的区别 3.表达式:(常量表达式、存储器表达式) 4.伪指令:(四个定义:数据定义、符号定义、段定义、过程定义) 数据定义与符号定义的区别:是否占存储单元;过程定义:(段内、段间) 5.汇编语言上机步骤:(编辑、汇编、连接、调试)

微机原理与接口技术知识点总结材料整理

《微机原理与接口技术》复习参考资料 第一章概述 一、计算机中的数制 1、无符号数的表示方法: (1)十进制计数的表示法 特点:以十为底,逢十进一; 共有0-9十个数字符号。 (2)二进制计数表示方法: 特点:以2为底,逢2进位; 只有0和1两个符号。 (3)十六进制数的表示法: 特点:以16为底,逢16进位; 有0--9及A—F(表示10~15)共16个数字符号。 2、各种数制之间的转换 (1)非十进制数到十进制数的转换 按相应进位计数制的权表达式展开,再按十进制求和。(见书本1.2.3,1.2.4)(2)十进制数制转换为二进制数制 ●十进制→二进制的转换: 整数部分:除2取余; 小数部分:乘2取整。 ●十进制→十六进制的转换: 整数部分:除16取余; 小数部分:乘16取整。 以小数点为起点求得整数和小数的各个位。 (3)二进制与十六进制数之间的转换 用4位二进制数表示1位十六进制数 3、无符号数二进制的运算(见教材P5) 4、二进制数的逻辑运算 特点:按位运算,无进借位 (1)与运算 只有A、B变量皆为1时,与运算的结果就是1 (2)或运算 A、B变量中,只要有一个为1,或运算的结果就是1 (3)非运算 (4)异或运算 A、B两个变量只要不同,异或运算的结果就是1 二、计算机中的码制 1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。数X的原码记作[X]原,反码记作[X]反,补码记作[X]补。

注意:对正数,三种表示法均相同。 它们的差别在于对负数的表示。 (1)原码 定义: 符号位:0表示正,1表示负; 数值位:真值的绝对值。 注意:数0的原码不唯一 (2)反码 定义: 若X>0 ,则[X]反=[X]原 若X<0,则[X]反= 对应原码的符号位不变,数值部分按位求反 注意:数0的反码也不唯一 (3)补码 定义: 若X>0,则[X]补= [X]反= [X]原 若X<0,则[X]补= [X]反+1 注意:机器字长为8时,数0的补码唯一,同为00000000 2、8位二进制的表示围: 原码:-127~+127 反码:-127~+127 补码:-128~+127 3、特殊数10000000 ●该数在原码中定义为:-0 ●在反码中定义为:-127 ●在补码中定义为:-128 ●对无符号数:(10000000)2= 128 三、信息的编码 1、十进制数的二进制数编码 用4位二进制数表示一位十进制数。有两种表示法:压缩BCD码和非压缩BCD码。(1)压缩BCD码的每一位用4位二进制表示,0000~1001表示0~9,一个字节表示两位十进制数。 (2)非压缩BCD码用一个字节表示一位十进制数,高4位总是0000,低4位的0000~1001表示0~9 2、字符的编码 计算机采用7位二进制代码对字符进行编码 (1)数字0~9的编码是0110000~0111001,它们的高3位均是011,后4位正好与其对应的二进制代码(BCD码)相符。

微机原理与接口技术 知识点总结

《微机原理与接口技术》复习参考资料 教师:万显荣 复习资料说明: 1、标有红色星号“ ”的内容为重点内容 3、本资料末尾附有“《微机原理与接口技术》综合练习题与答案错误修正”和“《微机原理与接口技术》综合练习题与答案中不作要求的部分”,请注意查看。 第一章概述 一、计算机中的数制 1、无符号数的表示方法: (1)十进制计数的表示法 特点:以十为底,逢十进一; 共有0-9十个数字符号。 (2)二进制计数表示方法: 特点:以2为底,逢2进位; 只有0和1两个符号。 (3)十六进制数的表示法: 特点:以16为底,逢16进位; 有0--9及A—F(表示10~15)共16个数字符号。 2、各种数制之间的转换 (1)非十进制数到十进制数的转换 按相应进位计数制的权表达式展开,再按十进制求和。(见书本1.2.3,1.2.4)(2)十进制数制转换为二进制数制 ●十进制→二进制的转换: 整数部分:除2取余; 小数部分:乘2取整。 ●十进制→十六进制的转换: 整数部分:除16取余; 小数部分:乘16取整。 以小数点为起点求得整数和小数的各个位。 (3)二进制与十六进制数之间的转换 用4位二进制数表示1位十六进制数 3、无符号数二进制的运算(见教材P5) 4、二进制数的逻辑运算 特点:按位运算,无进借位 (1)与运算 只有A、B变量皆为1时,与运算的结果就是1 (2)或运算 A、B变量中,只要有一个为1,或运算的结果就是1 (3)非运算 (4)异或运算 A、B两个变量只要不同,异或运算的结果就是1 二、计算机中的码制(重点 ) 1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。数X的原码记作[X]原,反码记作[X]反,补码记作[X]补。

微机原理知识点整理

8086/8088微处理器的编程结构 编程结构:是指从程序员和使用者的角度看到的结构,亦可称为功能结构。从功能上来看,8086CPU可分为两部分,即总线 接口部件BIU和执行部件EU。 总线接口部件(BIU 组成:①段寄存器(DS、CS、ES、SS ②16 位指令指针寄存器IP(指向下一条要取出的指令代码;③20位地址加法器(用来 产生20位地址; ④6字节(8088为4字节指令队列缓冲器;

⑤总线控制逻辑。 功能:负责从内存中取指令,送入指令队列,实现CPU与存储器和I/O接口之间的数据传送。 执行部件(EU 组成:①ALU(算术逻辑单元;②数据寄存器(AX、BX、CX、DX; ③指针和变址寄存器(BP、SP、SI、DI;④标志寄存器(PSW;⑤EU控制系统。 功能:负责分析指令和执行指令。 BIU和EU的动作协调原则 BIU和EU按以下流水线技术原则协调工作,共同完成所要求的任务: ①每当指令队列中有两个空字节,BIU就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序。 ②每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。如BIU正将某个指令字节取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。 ③当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。 ④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。 8086/8088内部的寄存器可以分为通用寄存器和专用寄存器两大类,

微机原理及接口技术期末复习资料重点归纳

微机重点总结 第一章 计算机中数的表示方法:真值、原码、反码(-127—+127)、补码(-128—+127)、BCD码,1000的原码为-0,补码为-8,反码为-7。 ASCII码:7位二进制编码,空格20,回车0D,换行0A,0-9(30-39),A-Z(41-5A),a-z(61-7A)。 模型机结构介绍 1、程序计数器PC:4位计数器,每次运行前先复位至0000,取出一条指令后PC自动加1,指向下一条指令; 2、存储地址寄存器MAR:接收来自PC的二进制数,作为地址码送入存储器; 3、可编程只读存储器PROM 4、指令寄存器IR:从PROM接收指令字,同时将指令字分别送到控制器CON和总线上,模型机指令字长为8位,高4位为操作码,低4位为地址码(操作数地址); 5、控制器CON:(1)每次运行前CON先发出CLR=1,使有关部件清零,此时PC=0000,IR=0000 0000;(2)CON 有一个同步时钟输出,发出脉冲信号CLK到各部件,使它们同步运行;(3)控制矩阵CM根据IR送来的指令发出12位控制字,CON=C P E P L M E R L I E I L A E A S U E U L B I O; 6、累加器A:能从总线接收数据,也能向总线送数据,其数据输出端能将数据送至ALU进行算数运算(双态,不受E门控制); 7、算数逻辑部件ALU:当S U=0时,A+B,当S U=1时,A-B; 8、寄存器B:将要与A相加或相减的数据暂存于此寄存器,它到ALU的输出也是双态的; 9、输出寄存器O:装入累加器A的结果; 10、二进制显示器D。 中央处理器CPU:PC、IR、CON、ALU、A、B;存储器:MAR、PROM;输入/输出系统:O、D。 执行指令过程:指令周期(机器周期)包括取指周期和执行周期,两者均为3个机器节拍(模型机),其中,取指周期的3个机器节拍分别为送地址节拍、读存储节拍和增量节拍。 控制器:环形计数器(RC)、指令译码器(ID)、控制矩阵(CM)、其他控制电路。 微型计算机硬件基本结构:算术逻辑单元ALU、控制器、存储器、输入/输出设备。 微型机工作原理:存储程序,按地址顺序执行。 第二章 微处理器基本结构和功能: 1、内部寄存器阵列(通用寄存器和专用寄存器); 2、算数逻辑运算单元; 3、控制器(指令寄存器、指令译码器和各种定时与控制 信号产生电路); 4、现代微处理器中还集成了浮点运算部件及高速缓冲寄 存器cache。 8086/8088微处理器结构: 执行部件EU的组成: 1、ALU(算术逻辑单元); 2、寄存器组: (1)通用寄存器:4个16位通用寄存器(AX、BX、CX、DX)或8个8位寄存器(AL、AH、BL、BH、CL、CH、DL、DH),其中AX为累加器,BX为基址寄存器,CX为计数寄 存器,DX为数据寄存器; (2)专用寄存器:两个16位指针寄存器SP和BP,两个 16位变址寄存器SI和DI,其中,SP是堆栈指针寄存器, 由它和堆栈段寄存器SS一起来确定堆栈在内存中的位 置,BP是基址指针寄存器,通常用于存放基地址,SI是 原变址寄存器,DI是目的变址寄存器,都用于指令变址寻 址方式; (3)标志寄存器FR :为16位寄存器,其中7位未使用, 使用的9个标志位可分为两类:状态标志(CF、PF、AF、8086/8088 CPU 总线接口单 元BIU(完成 取指令和存 取数据) 执行单元EU (负责分析 指令和执行 指令) 段寄存器(CS、SS、DS、ES) 指令指针寄存器IP 地址加法器 指令队列 内部控制逻辑 输入/输出控制电路 算术逻辑单元ALU 寄存器组 标志寄存器FR 暂存器 AX BX CX DX 通用寄存器 专用寄存器

微机原理复习知识点总结

1 .所谓的接口其实就是两个部件或两个系统之间的交接部分(位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路)。 2.为了能够进行数据的可靠传输,接口应具备以下功能:数据缓冲及转换功能、 设备选择和寻址功能、联络功能、接收解释并执行CPU命令、中断管理功能、可编程功能、(错误检测功能)。 3.接口的基本任务是控制输入和输出。 4.接口中的信息通常有以下三种:数据信息、状态信息和控制信息。 5.接口中的设备选择功能是指: 6.接口中的数据缓冲功能是指:将传输的数据进行缓冲,从而对高速工作的CPU 与慢速工作的外设起协调和缓冲作用,实现数据传送的同步。 7 .接口中的可编程功能是指:接口芯片可有多种工作方式,通过软件编程设置 接口工作方式。 8.计算机与外设之间的数据传送有以下几种基本方式:无条件传送方式(同步 传送)、程序查询传送(异步传送)、中断传送方式(异步传送)、DMA传送方式(异步传送)。 9.根据不同的数据传输模块和设备,总线的数据传输方式可分为无条件传输、 程序查询传送方式、中断传送方式、DMA方式。 10.总线根据其在计算机中的位置,可以分为以下类型:片内总线、内部总线、系统总线、局部总线、外部总线。 11.总线根据其用途和应用场合,可以分为以下类型:片内总线、片间总线、内 总线、外总线。ISA 总线属于内总线。 12 .面向处理器的总线的优点是:可以根据处理器和外设的特点设计出最适合 的总线系统从而达到最佳的效果。 13.SCSI 总线的中文名为小型计算机系统接口(Small Computer System Interface) ,它是 芯的信号线,最多可连接7 个外设。 14.USB 总线的中文名为通用串行接口,它是 4 芯的信号线,最多可连接127 个外设。15 .I/O 端口的编码方式有统一编址和端口独立编址。访问端口的 方式有直接寻址和间接寻址。PC机的地址由16 位构成,实际使用中其地址范围 为000~3FFH。 16.在计算机中主要有两种寻址方式:端口独立编址和统一编址方式。在端口独立编址方式中,处理器使用专门的I/O 指令。 17.74LS688的主要功能是:8 位数字比较器,把输入的8 位数据P0-P7 和预设的8 位数据Q0-Q7进行比较。如果相等输 d 出0,不等输出1。 主要功能:把输入的8 位数据P0-P7 和预设的8 位数据Q0-Q7进行比较,比较的结果有三种:大于、等于、小于。通过比较器进行地址译码时,只需把某一地址 范围和预设的地址进行比较,如果两者相等,说明该地址即为接口地址,可以开始相应的操作。 18.8086 的内部结构从功能上分成总线接口单元BIU和执行单元EU两个单元。19.8086 有20 地址线,寻址空间1M,80286有24根地址线,寻址空间为16M。20.8086/8088 有两种工作模式,即最大模式、最小模式,它是由MNMX决定的。21.在8086/8088 系统中,I/O 端口的地址采用端口独立编址方式,访问端口时 使用专门的 I/O 指令。

微机原理知识点总结

1、计算机硬件的五大组成部分:运算器、控制器、存储 器、输入设备、输出设备。 2、 和协调着整个计算机系统的工作。 微型计算机:主机,包括微处理器,存储器,总线、输入输出接口电路。 +外部设备+软件 3、微处理器工作原理:程序存储和程序控制 4、微机系统的内存分类:RAM ROM 5、8086两个独立部件: 执行部件EU:负责指令的执行;组成:8个通用寄存器,一个标志寄存器,运算器,EU控制电路。 总线接口部件BIU:负责CPU与存储器和I/O设备间的数据传送。组成:地址加法器、段寄存器、指令指针寄存器、总线控制电路、内部暂存器、指令队列。6、8个通用寄存器:累加器AX,基址寄存器BX, 计数寄存器CX, 数据寄存器DX,堆栈指针寄存器SP,基址指针寄存器BP,源变址寄存器SI,目标变址寄存器DI 4个段寄存器:代码段CS:存放指令代码;数据段DS:存放操作数;附加段ES:存放操作数;堆栈段SS:指示堆栈区域的位置。 7、指令指针IP的功能:控制CPU指令执行的顺序,指

向下一条要执行指令的偏移地址。 8、标志寄存器:状态标志位,控制标志位 9、8086有20根地址线。16根数据线 10、 第三章 11、指令的7种寻址方式:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址。 12、指令:数据传送指令MOV、压栈指令PUSH、出栈指令POP、交换指令XCHG、取偏移地址指令LEA、输入指令IN、输出指令OUT、加法运算指令ADD、加一指令INC、减法指令SUB、减一指令DEC、求补指令NEG、比较指令CMP、与指令AND、或指令OR、异或指令XOR、测试指令TEST、非循环逻辑左移指令SHL、非循环逻辑右移指令SHR、无条件转移指令JMP、

微机原理重点

第一章概述 1.超线程 超线程的英文是HT技术,全名为Hyper-Threading,原先只应用于Xeon处理器中,当时称为Super-Threading。之后陆续应用在Pentium 4中,将技术主流化。在某些程序或未对多线程编译的程序而言,超线程反而会降低效能。除此之外,超线程技术亦要操作系统的配合。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行速度。 2.多核 指在一枚处理器(chip)中集成两个或多个完整的计算引擎(内核),仅仅提高单核芯片(one chip)的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此,通过划分任务,线程应用能够充分利用多个执行内核,并可在特定的时间内执行更多任务。多核处理器是单枚芯片(也称为“硅核”),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。 3.8086系列96位16位8 位 Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。不久,Intel 8088就推出了,拥有一个外部的8位数据总线,8086 CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置 4.主板BIOS 它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。。一块主板 性能优越与否,很大程度上取决于主板上的BIOS管理功能是否先进。NORFlash从奔腾 时代开始,现代的电脑主板都使用NORFlash来作为BIOS的存储芯片。除了容量比EEPROM更大外,主要是NORFlash具有写入功能. 5.指令系统 主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。主板上最重要的构成组件是芯片组(Chipset)。而芯片组通常由北桥和南桥组成,北桥芯片提供对CPU的类型和主频、内存的类型和最大容量、ISA/PCI/AGP

相关文档
相关文档 最新文档