微机原理与接口技术v2015-第6章
- 格式:pdf
- 大小:2.55 MB
- 文档页数:69
第二章微处理器及其结构2-7 什么是逻辑地址? 什么是物理地址? 在实地址方式下,如何求存储器的物理地址? 设一个16字的数据区,它的起始地址为70A0H:DDF6(段基址:偏移地址).写出这个数据区的首字单元和末字单元的物理地址.解:1). 实模式下,逻辑地址由段基址和偏移地址组成.物理地址是真正的存储单元的地址.2). 物理地址=段基址*16 + 偏移地址3). 首字单元地址:70A0H*16 +DDF6H = 70A00H + DDF6H = 7E7F6H末字单元地址:7E7F6H + (16-1)*2 = 7E7F6H + 1EH = 7E814H注意:相邻两个存储单元可构成一个字长为16位的字,在对准字时,用偶地址表示字的地址.1EH1CH 2H20H16H14H18H4H1AH10H0H12HEHCH8HAH6H第三章指令系统3-6 分别指出下列指令中源操作数和目标操作数的寻址方式. 若是存储器寻址,用表达式表示EA=?(1)AND AX, 00FFH(2)ADD BX, [00FFH](3)MOV AX, [BX+10H](4)ADD AX, [ESI*8](5)SUB [BP][SI], AX(6)MOV AX, [BX+DI+20H](7)CMP [SI], AX(8)OR AX, DX(9)MOV EAX, [ESI][EDI*2](10)PUSH DS解:(1)立即数寻址(2)直接寻址EA=00FFH(3)基址寻址EA=(BX)+10(4)比例间址EA=ESI*8(5)基址加间址寻址EA=(BP)+(SI)(6)带位移的基址加间址寻址EA=(BX)+(DI)+20H(7)间址寻址EA=(SI)(8)寄存器寻址(9)基址加比例间址寻址EA=(ESI)+(EDI)*2(10)寄存器寻址注意:◆16位寻址: BX和BP作为基址寄存器.BX以DS作为默认段寄存器,BP以SS为默认段寄存器.SI和DI作为间址寄存器. 默认DS为段寄存器◆32位寻址: 8个32位通用寄存器均可作为基址寄存器,其中ESP,EBP以SS为默认段寄存器,其余均以DS为默认段寄存器.除ESP外的其它7个寄存器均可作间址寄存器,EBP默认SS作段基址寄存器,其它以DS作段基址寄存器3-7 32位微机工作在实地址模式下, 已知(DS) = 1000和(SS) = 2000H, (SI) = 007FH, (BX) = 0040H, (BP) = 0016H, 变量TABLE的偏移地址为0100H. 指出下列指令中源操作数的寻址方式,求它的有效地址(EA)和物理地址(PA).(1)MOV AX, [1234H](2)MOV AX, TABLE(3)MOV AX, [BX+100H](4)MOV AX, TABLE[BP][SI]解:(1)直接寻址EA=1234H PA=(DS)*16 + EA = 11234H(2)直接寻址EA=(TABLE)=0100H PA=(DS)*16+EA=10100H(3)基址寻址EA=(BX)+100H=0140H PA=(DS)*16+EA=10140H(4)带位移的基址加间址寻址EA=(BP)+(SI)+TABLE=0195H PA=(SS)*16+EA=20195H注意: 当基址寄存器和间址寄存器默认的段寄存器不同时,一般规定,由基址寄存器来决定默认的段寄存器为段基址寄存器. 这里BP为基址寄存器,所以默认SS为段基址寄存器.3-8 指出下列指令的错误,并加以改正.(1)MOV DS, 100(2)MOV 1020H, DX(3)SUB [1000H], [SI](4)PUSH AL(5)IN AL, [80H](6)MOV DS, ES(7)JMP BX(8)SHR DX, 4(9)OUT 380H, AX(10)ADD AL, BX(11)POP CS(12)MOV CL, 3300H解:(1)立即数不能直接传送到段寄存器中去应改为: MOV AX, 100MOV DS, AX(2)立即数只能出现在源操作数位置应改为: MOV DX,1020H(3)源操作数和目标操作数不能同时为寄存器寻址应改为: MOV AX, [1000H]SUB AX, [SI](4)PUSH指令不能操作8位数据应改为: PUSH AX(5)[80H ]不是端口IN AL ,80H应改为: IN AL, 80H(6)两个段寄存器之间不能直接传送应改为: MOV AX, ESMOV DS,AX(7)对(8)移位次数超过1的时候,要把移位次数放入CL中应改为: MOV CL, 4SHR DX, CL(9)端口地址大于255时,要把地址放入DX中应改为: MOV DX, 380HOUT DX, AX(10)源操作数和目标操作数不匹配应改为: ADD AX, BX(11)POP指令只能使用在存储器或通用寄存器可改为: POP AX(12)源操作数和目标操作数不匹配应改为: MOV CX, 3300H3-9 已知: (DS) = 091DH, (SS) = 1E4AH, (AX) = 1234H, (BX) = 0024H, (CX) = 5678H, (BP) = 0024H, (SI) = 0012H, (DI) = 0032H, [09226H] = 00F6H, [09228H] = 1E40H, [1E4F6H] = 091DH. 试求下列各指令单独执行后的结果.(1)MOV CL, 20H[BX][SI] ; (CL) = ?(2)MOV [BP][DI], CX ; [IE4F6H] = ?(3)LEA BX, 20H[BX][SI] : (BX) = ?MOV AX, 2[BX] : (AX) = ?(4)LDS SI, [BX][DI]MOV [SI], BX ; (SI]) = ?(5)XCHG CX, 32H[BX] ; (AX) = ?XCHG 20[BX][SI], AX ; [09226H] = ?解:(1)(CL) = 00F6H(2)[IE4F6H] = 5678H(3)(BX) = 0056H(AX) = 1E40H(4)(SI)= 0024H(5)(AX) = 5678H[09226H] = 1234H3-10 已知(AL) = 0C4H, DA TA单元中内容为5AH, 写出下列每条指令单独执行后的结果(ODITSZAPC:0---xxux0)(1)AND AL, DATA(2)OR AL, DA TA(3)XOR AL, DA TA(4)NOT DA TA(5)AND AL, 0FH(6)OR AL, 1H(7)XOR AL, 0FFH(8)TEST AL, 80H解:(1)(AL) = 40H CF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义(2)(AL) = DEH CF=0,OF=0,SF=1,ZF=0,PF=1,AF无定义(3)(AL) = 9EH CF=0,OF=0,SF=1,ZF=0,PF=0,AF无定义(4)(AL) = A5H 不影响任何标志位(5)(AL) = 04H CF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义(6)(AL) = C5H CF=0,OF=0,SF=1,ZF=0,PF=1,AF无定义(7)(AL) = 3BH CF=0,OF=0,SF=0,ZF=0,PF=0,AF无定义(8)(AL)不变=0C4H CF=0,OF=0,SF=1,ZF=0,PF=0,AF无定义3-12 (AL)=8EH,(BL)=72H,执行以下指令后,标志位OF、SF、ZF、AF、PF和CF的值是什么?(1)ADD AL,BL(2)AND BL,AL(3)CMP AL,BL(4)SHL AL,1解:(1)OF=0,SF=0,ZF=1,AF=1,PF=1,CF=1(2)OF=0,SF=0,ZF=0,AF=(未定义),PF=0,CF=0(3)OF=1,SF=0,ZF=0,AF=0,PF=0,CF=0(4)OF=1,SF=0,ZF=0,AF=(未定义),PF=0,CF=13-15 试用CMP指令和无条件指令实现以下判断(1)AX和CX中的内容均为无符号数①(AX)>(CX)则转至BIGGER标号执行②(AX)<(CX)则转至LESS标号执行(2)BX和DX中的内容均为有符号数①(BX)>(DX)则转至BIGGER标号执行②(BX)<(DX)则转至LESS标号执行解:(1)CMP AX,CXJA BIGGERJB LESS(2)CMP BX,DXJG BIGGERJL LESS第四章汇编语言程序设计4-9 试用伪指令编写一数据段与下面程序等效。
2114: 128片,10位和6位。
6116: 32片,11位和5位。
6264: 8片,13位和3位。
5.42114:611662646.4stack segment stack 'stack'dw 32 dup(0)stack endscode segmentstart proc farassume ss: stack, cs: codepush dssub ax, axpush axCALL I6116 ;调用写入6116子程序MOV AH, 2 ;回车换行MOV DL, 0DHINT 21HMOV DL, 0AHINT 21HCALL O6116 ;调用读出6116子程序ret;写入6116:将键入字符的ASCII码写入6116I6116 PROCMOV BL, 0 ;定义页地址码(16个地址为一页)MOV CX, 128 ;定义页数LOP1: PUSH CXMOV DX, 380H ;将页地址从74LS273输出MOV AL, BLOUT DX, ALMOV CX, 16 ;定义页内单元数MOV DX, 390H ;将键入数写入16个单元LOP2: MOV AH, 1INT 21HOUT DX, ALINC DXLOOP LOP2INC BL ;换页POP CXLOOP LOP1 ;页数未满换页重新写入16个单元RETI6116 ENDP;读出6116:将写入6116的数据读出送显示O6116 PROCMOV BL, 0MOV CX, 128LOP3 PUSH CXMOV DX, 390HMOV AL, BLOUT DX, ALMOV CX, 16MOV DX 380H ;将16个单元的数据送显示LOP4: IN AL, DXPUSH DXMOV DL, AL ;将6116中读出的ASCII码送DLMOV AH, 2 ;2号功能调用显示DL中的字符INT 21HPOP DXINC DXLOOP LOP4INC BLPOP CXLOOP LOP3RETO6116 ENDPend start6.5stack segment stack 'stack'dw 32 dup(0)stack endscode segmentstart proc farassume ss: stack, cs: codepush dssub ax, axpush axMOV AH, 2 ;用2号功能调用输出字符,调用号送AHMOV CX, 100 ;字符个数送计数器MOV DX, 380HWAIT0: IN AL, DX ;从244读入TEST AL, 80H ;测试状态位是否为0JNZ WAIT0 ;不为0,等待继续测试状态WAIT1: IN AL, DX ;状态为0,继续读入TEST AL, 80H ;测试状态是否为1JZ WAIT1 ;不为1,等待继续测试状态IN AL, DX ;状态为1,读入数据即ASCII码AND AL, 7FH ;去掉状态位MOV DL, AL ;ASCII码送DL,输出字符INT 21HLOOP WAIT0-3 ;跳到给DX赋值380H的MOV指令,该指令为3字节retstart endpcode endsend start。
习题参考答案第1章习题参考答案1. (1)D (2)D (3)B (4)C (5)D (6)D2. 答:计算机是一种以电子器件为基础的,不需人的直接干预,能够对各种数字化信息进行快速算术和逻辑运算的工具,是一个由硬件﹑软件组成的复杂的自动化设备。
理解计算机的概念,应从六个方面:(1)以电子器件为物质基础,即研究的对象是电子数字计算机(Digital Computer);(2)不需要人的直接干预,说明具有自动化能力,其前提是存储程序;(3)处理各种数字化信息,计算机以二进制编码作为数字化编码及运算的基础;(4)具有算逻运算能力,基本运算操作是算术和逻辑运算;(5)计算机是快速工具,主要取决于两个因素:一是电子器件,二是存储程序。
(6)由硬件和软件组成。
3. 答:见本章小结。
4. 答:计算机的生命力在于它的广泛应用,应用的范围几乎涉及人类社会的所有领域。
归纳起来,在科学计算、过程检测与控制、信息管理、计算机辅助系统等领域中的应用成就最为突出。
举例:计算机辅助教学CAI;学生的学籍管理系统;数字图书馆系统;虚拟现实系统;售票系统;学校的一卡通系统等。
5. 答:冯•诺依曼原理的基本思想是:•采用二进制形式表示数据和指令。
指令由操作码和地址码组成。
•将程序和数据存放在存储器中,使计算机在工作时从存储器取出指令加以执行,自动完成计算任务。
这就是“存储程序”和“程序控制”(简称存储程序控制)的概念。
•指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由转移指令实现。
•计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定了5部分的基本功能。
冯•诺依曼型计算机的基本特点也可以用“存储程序”和“程序控制”来高度概括。
6. 答:计算机的硬件系统由有形的电子器件等构成的,它包括运算器、存储器、控制器、输入输出设备及总线系统组成。
而总线分为数据总线、地址总线、控制总线,其结构有单总线结构、双总线结构及多总线结构。
Principle of Microcomputer and Interface Technology Electronics Information EngineeringSichuan University EI第 6 章微机原理与接口技术第6章输入输出接口技术教学重点●I/O端口地址译码与读写控制●输入输出传送方式I/O接口概述•微机的外部设备多种多样,各方面彼此差别很大。
–工作原理不同机械、电子、机电、电磁……–传送信息类型多样数字量、模拟量、开关量–传送速度差别极大–传送方式不尽相同串行、并行–编码方式不同二进制、BCD码、ASCII码……•它们不能与CPU直接相连,必须经过中间电路与CPU相连。
•这部分电路被称为I/O接口电路。
I/O接口概述•I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路。
•PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路。
•什么是I/O接口(电路)?CPU接口电路I/O 设备主板各种接口卡网卡视频采集卡显卡声卡I/O接口的主要功能(1) 地址译码和设备选择(2) 信息的输入和输出(3) 信息转换并串、DA/AD转换数据格式电平转换(4) 对外设的控制与监测(5) 中断或DMA管理(6) 可编程(7) 错误检测CPU与I/O设备之间的接口信息•数据信息(Data)–数字量:以二进制形式表示的数–模拟量–开关量:表示两个状态的量,可用1位二进制数表示•状态信息(Status)–反映外设当前所处的工作状态,是外设通过接口传送给CPU的,如READY,BUSY •控制信息(Control)–CPU通过接口传送给外设的信息,如启停I/O 接口的典型结构控制总线CB 地址总线ABI/O 接口电路数据控制状态数据总线DBCPU外设控制寄存器状态寄存器数据寄存器CPU 如何与I/O 接口电路通信?接口电路的内部结构•CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部:(1)数据寄存器–输入数据寄存器:保存外设给CPU的数据–输出数据寄存器:保存CPU给外设的数据(2)状态寄存器–保存外设或接口电路的状态(3)控制寄存器–保存CPU给外设或接口电路的命令•主要体现在引脚上,分成两侧信号。
•面向CPU一侧的信号:–用于与CPU连接–主要是数据、地址和控制信号•面向外设一侧的信号:–用于与外设连接–提供的信号五花八门–功能定义、时序及有效电平等差异较大•许多接口电路具有多种功能和工作方式,可以通过编程的方法选定其中一种。
•接口需要进行物理连接,还需要编写接口软件。
•接口软件主要完成:–初始化——设定芯片工作方式等–数据交换——管理、控制、驱动外设,负责外设和系统间信息交换I/O 端口的编址•接口电路占用的I/O端口有两类形式。
•独立编址方式(或称I/O映射编址)–I/O地址空间独立于存储地址空间–如8086/8088•统一编址方式(或称存储器映射编址)–I/O与存储器共享一个地址空间–如M6800,ARMI/O 端口独立编址•优点:–I/O端口地址不占用存储器地址空间–控制和地址译码电路相对简单–专门的I/O指令使程序清晰易读•缺点:–I/O指令没有存储器指令丰富–要求提供I/O读写控制信号,增加了复杂性内存空间I/O空间FFFFFFFFFI/O端口与存储器统一编址•优点:–不需要专门的I/O指令–I/O数据存取与存储器数据存取一样灵活–外设数目几乎不受限制,而只受总存储容量的限制–读写控制逻辑较简单•缺点:–I/O端口要占去部分存储器地址空间–程序中不易分清访问内存还是访问外设内存部分I/O部分存储器空间00000FFFFF8088/8086的I/O端口•采用I/O 端口独立编址•程序员能看到的外设是端口。
•CPU用于寻址外设端口的地址线为16根。
–端口最多为216=65536(64K)个–端口号为0000H ~ FFFFH•每个端口用于传送一个字节的外设数据。
•实际上PC机只用了1024个端口:–端口号为0000H ~ 03FFH–地址线只用10条A0~A9回顾8088/8086的端口寻址方式•8088/8086的端口无需分段,设计有两种寻址方式。
•直接寻址:只用于寻址00H ~ FFH前256个端口,操作数i8表示端口号。
•间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号。
•对大于FFH的端口只能采用间接寻址方式。
回顾8088/8086的输入输出指令•输入指令(IN:将外设数据传送给CPU内的AL/AX)IN AL, i8;字节输入IN AL, DX;字节输入IN AX, i8;字输入IN AX, DX;字输入•输出指令(OUT:将CPU内的AL/AX数据传送给外设)OUT i8, AL;字节输出OUT DX, AL;字节输出OUT i8, AX;字输出OUT DX, AX;字输出IN 指令实例(从20H 端口输入一个字);方法1:直接寻址,字量输入in ax, 20h;方法2:间接寻址,字量输入mov dx, 20hin ax, dx;方法3:直接寻址,字节量输入in al, 21hmov ah, alin al, 20h;方法4:间接寻址,字节量输入mov dx, 21hin al, dxmov ah, aldec dx in al, dxOUT指令实例(向300H端口输出一个字节);唯一的方法:间接寻址,字节量输出mov al, bvar;bvar是字节变量mov dx, 300hout dx, alI/O地址译码方法•I/O地址的译码方法与存储器地址的译码方法一样。
•每个接口电路通常占用几个I/O地址(等效于存储器的存储单元)•高位地址线与CPU的控制信号结合,经译码电路产生I/O接口芯片的片选信号。
•低位地址线直接连到I/O接口芯片,实现I/O接口芯片的片内寻址。
I/O接口通常与总线连接(如ISA总线)常用引脚IOR、IOWAEN:AEN为高是DMA操作,为低是I/O操作AEN是DMAC发出的信号。
A-A:地址线总线读写控制信号转换I/O读I/O写存储器读存储器写•利用门电路进行地址译码。
A9A8A7A6A5A4A3A2A1A0 110101111035EHA9A8A7A6A5A4A3A2A1A035EH&11AEN1IOW11CS•利用译码器电路进行地址译码。
A 9A 8A 7A 6A 5A 4A 3A 2A 1A 01101000x x x全地址译码电路340H 341H 342H 343H 344H 345H 346H 347HALS138译码器A 2A 1A 0AENA 7A 5A 4A 3&A 9A 8A 6&C B AY0Y1Y2Y3Y4Y5Y6Y7G3G1G2A9A8A7A6A5A4A3A2A1A0 00000x x x x x 00001x x x x x00011x x x x x →000H~01FH →020H~03FH00010x x x x x→040H~05FH→060H~07FHIN AL, 21HOUT 43H, AL•端口数目是1024个,端口地址空间从000~3FFH,由地址线A~A9进行译码。
•I/O接口电路大体上分为两类:–主板上的I/O接口芯片–扩展槽上的I/O接口控制卡•I/O端口地址空间也分为两部分:–前256个端口(000~0FFH)专供I/O接口芯片使用。
–后768个端口(100~3FFH)为I/O接口控制卡使用。
–P232表6-1和6-2•凡是被系统配置占用了的端口地址一律不能使用。
•从原则上讲,未被系统占用的地址用户都可以使用;•但对计算机厂家申明保留的地址不要使用,以免发生I/O端口地址重叠和冲突造成所设计的产品与系统不兼容。
•通常,用户可使用300H~31FH,这是PC系列微机留作实验卡用的。
•在用户可用的I/O地址范围内,为了避免与其他用户开发的接口控制卡发生地址冲突,最好采用地址开关。
在windows中查看接口地址I/O 地址译码电路的方式(4)•开关式可选择地址译码。
拨码开关8位数据比较器74 LS688当P~P7与Q0~Q7状态一致时,P=Q输出低电平。
本例中要使译码有效,A9、AEN必须为多少?输入输出传送方式•外设与微机之间的信息传送实质是CPU与接口之间的信息传送。
•CPU输入输出数据的方式:–无条件–查询–中断–DMA•在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送。
•特点:直接与外设进行数据传送。
这就是无条件传送,或称同步传送。
•适合于简单设备,如LED数码管、按键或按钮等。
•无条件传送的接口和操作均十分简单。
前提:外设必须随时就绪。
无条件传送输入接口示例IOR三态缓冲器OEI/O装置地址译码器D7~D0A15~AAEN0160HMOV DX,160HIN AL, DX输入接口的实例74LS244+5V10K x 8G 1G 2数据总线CS IOR;假设端口地址为160HMOV DX, 160H IN AL, DX无条件传送输出接口示例地址译码器数据锁存器A 15-A 0IOWAEN 0160H 输出设备D 7-D 0MOV DX, 160H OUT DX, AL输出接口的实例+5V74LS373300×8LE OE数据总线CS IOW;打开所有LED 灯MOV DX, 160H MOV AL, 00H OUT DX, AL输入输出实例——根据开关输入让相应的灯亮K7K1K0+5V D 0~D 7A 0~A 15CLKLS06反相驱动器LS2738D 锁存器LS244三态缓冲器210H译码+5VLED0LED7……GIOWIOR接口程序next:mov dx,210h;DX指向数据端口in al,dx;从输入端口读开关状态not al;反相out dx,al;送输出端口显示call delay;调子程序延时jmp next;重复教材上的原理图查询传送方式•CPU需要先查询外设的工作状态,然后在外设就绪后实现数据输入或输出。
•又称条件传送方式。
•查询传送的特点–工作可靠,适用面宽;–但传送效率低。
就绪的含义•在输入场合–说明输入接口已准备好送往CPU的数据,正等着CPU来读取。
–也可用接口中数据缓冲器已“满”来描述。
•在输出场合–说明输出接口已做好准备,等待接收CPU要输出的数据。
–也可用接口数据缓冲器已“空”、或者用外设“闲”或不“忙”(Busy)来描述。
查询传送的两个环节⑴查询环节–寻址状态端口–读取状态寄存器的标志位–若不就绪就继续查询,直至就绪⑵传送环节–寻址数据端口–输入:通过输入指令从数据端口读入数据–输出:通过输出指令向数据端口输出数据输入状态就绪?数据交换Y N查询传送流程查询输入接口查询输入接口程序mov dx, STATUS_PORT;DX指向状态端口status:in al, dx;读状态端口test al, 80h;测试标志位D7jz status;D=0,未就绪,继续查询7mov dx, DATA_PORT;D7=1,就绪,DX指向数据端口in al, dx;从数据端口输入数据查询输出接口查询输出接口程序mov dx, STATUS_PORT;DX指向状态端口status:in al,dx;读取状态端口的状态数据test al,80h;测试标志位D7jnz status;D=1,未就绪,继续查询7mov dx, DATA_PORT;D7=0,就绪,DX指向数据端口mov al,buf;变量buf送ALout dx,al;将数据输出给数据端口查询接口综合举例D 4D 2D 1D 0控制端口04H 数据端口(02H)D 7CPU 数据总线DB状态端口(03H)控制端口(04H)A/D 转换器多路开关Vin7Vin08路输入模拟量1路模拟量读选通READY 读选通启动D4D 2D 1 D 08位数据写选通•选择模拟量输入:(D 2D 1D 0)3位控制多路开关,选择8路模拟量输入。