280 likes | 439 Views
微机原理与应用 习题课. 2009.11. 5. 运算器. 输出设备. 输入设备. 存储器. 控制器. 计算机组成结构. 第一章 概述 计算机的组成 - 冯 · 诺依曼结构. 微处理器 :进行算数 运算和逻辑运算。. 微型计算机硬件系统组成. 存储器 :存储程序、 数据、符号等. I/O 接口 :使外设 与微机相连。. 思考:. 计算机 由哪几部分组成? 微处理器、微型计算机和微型计算机系统三者之间有什么不同?. 暂存数据和结果. 分析和 执行指令. 控制单元. 工作寄存器组. 算术和 逻辑运算. I/O 控制逻辑.
E N D
微机原理与应用习题课 • 2009.11. 5
运算器 输出设备 输入设备 存储器 控制器 计算机组成结构 第一章 概述计算机的组成-冯·诺依曼结构
微处理器:进行算数 运算和逻辑运算。 • 微型计算机硬件系统组成 存储器:存储程序、 数据、符号等 I/O接口:使外设 与微机相连。
思考: 计算机由哪几部分组成? 微处理器、微型计算机和微型计算机系统三者之间有什么不同?
暂存数据和结果 分析和 执行指令 控制单元 工作寄存器组 算术和 逻辑运算 I/O控制逻辑 ALU CPU结构
CPU功能: 可以进行算数与逻辑运算 可以保存少量数据 能对指令进行译码并执行指令 能与存储器、外设交换信息 提供系统所需的定时和控制 可响应其它部件发来的中断请求
思考: CPU在内部结构上由哪几部分组成?CPU应具备什么功能? 累加器和其他通用寄存器相比有何不同?
2.2.1 Intel 8086微处理器结构:8086的内部结构 Intel 8086微处理器结构(重点) • 8086的内部结构-成两部分: • 总线接口部件BIU: • 总线接口单元BIU,负责控制存贮器读写。 • 执行部件EU: • 执行单元EU从指令队列中取出指令并执行。 • 特点: • BIU与EU两个单元相互独立,分别完成各自操作,还可以并行执行,实现指令预取(指令读取和执行的流水线操作)取指令和执行指令分开进行,提高了速度。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF 2.2.1 Intel 8086微处理器结构:执行部件EU • 16位标志寄存器 • 标志(Flag)用于反映指令执行结果 • 16位字利用了9位 • 标志分两类: • 状态标志(6位):反映刚刚完成的操作结果情况。 • 控制标志(3位):在某些指令操作中起控制作用。 程序设计需要利用标志的状态!
思考: • 8086的总线接口部件有那几部分组成? • 8086的执行部件有什么功能?由那几部分组成? • 8086/8088内部有哪些通用寄存器?
2.2.1 Intel 8086微处理器结构:存储器的分段管理 • 8086CPU有20条地址线 • 最大可寻址空间为220=1MB • 物理地址范围从00000H~FFFFFH • 8086CPU将1MB空间分成许多逻辑段(Segment) • 每个段最大限制为64KB • 段地址的低4位为0000B • 这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址
2.2.1 Intel 8086微处理器结构:存储器的分段管理 • 8086CPU存储系统中,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H ~ FFFFFH • 分段后在用户编程时,采用逻辑地址,形式为 段基地址:段内偏移地址 分隔符 物理地址 14700H 逻辑地址 1460H:100H
2.2.1 Intel 8086微处理器结构:存储器的逻辑地址 • 一个物理地址可以有多个逻辑地址 • 将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址 • 物理地址 = 16d×段地址+偏移地址 例5:逻辑地址1460:0100H 物理地址 14700H
思考: • 8086CPU最大可寻址空间为多少? • 存储器的物理地址是唯一的,用逻辑地址表示一个物理地址,逻辑地址是唯一的吗? • 存储器的逻辑地址由哪几部分组成?存储器的物理地址是怎样形成的? • 一个段最大寻址空间为多少?
2.2.1 Intel 8086微处理器结构:如何分配各个逻辑段 存储器分段小节: • 程序的指令序列必须安排在代码段 • 程序使用的堆栈一定在堆栈段 • 程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段 • 数据的存放比较灵活,实际上可以存放在任何一种逻辑段中
思考: • 代码段地址由CPU的哪两个寄存器确定? • 堆栈段地址由CPU的哪两个寄存器确定?
第3章 8086指令系统 • 了解微处理器基本结构、8088/8086的功能结构 • 掌握8088/8086的寄存器结构、存储器结构和寻址方式 • 熟悉汇编语言的语句格式,掌握8088/8086基本指令: 数据传送:MOV/XCHG/XLAT、PUSH/POP、LEA 加减运算:ADD/SUB、ADC/SBB、CMP、INC/DEC AAA/DAA、AAS/DAS 位 操 作:AND/OR/XOR/NOT/TEST、SHL/SHR/SAR、 ROL/ROR/RCL/RCR 串 操 作:MOVSB、CMPSB、SCASB 控制转移:JMP、JZ/JNZ、JC/JNC、JA/JNA、JB/JNB、JG/JL、 LOOP、 CALL/RET、INT n
例1、请指出下列指令源操作数是什么寻址方式?例1、请指出下列指令源操作数是什么寻址方式? (l) MOV CL ,20H (2) MOV [BP][DI],CX (3) LEA BX ,20H[BX][SI] 2、解释下列指令的含义: (1) MOV BX, BUFFER LEA BX, BUFFER ;MOV BX, OFFSET BUFFER (2) LEA AX, [2344H] LDS DI, [2344H] 假设:DS=1000H,(12344H)=082CH, (12346H)=6F78H 执行上面两条指令后,AX=2344H DS=6F78H DI=082CH
例3、下面这些指令哪些是正确的?哪些是错误的?如是错误的,请说明原因。例3、下面这些指令哪些是正确的?哪些是错误的?如是错误的,请说明原因。 1) MOV DS,AX ( ) 2) MOV [BX],[1000] ( ) 3) PUSH CS ( ) 4) POP CS ( ) 5) MOV 1000H,AX ( ) 6) MOV AX,BL ( ) 7) OUT 20H,AL ( )
例4: 89+75=164 MOV AL,89H MOV BL,75H ADD AL,BL ;(AL)=0FEH,AF=0,CF=0 DAA ;(AL)=64H,AF=1,CF=1 例5:假定DH=10111001B,CF=1,试确定下列各条指令单独执行后DH的值。 (1)SHL DH,1 ;DH=01110010,CF=1 (2)SAR DH,1 ;DH=11011100,CF=1 (3)ROL DH,1 ;DH=01110011,CF=1
第4章 汇编语言程序设计 • 熟悉常见程序设计问题 • 多精度运算 • 查表(查代码、特定值等) • ASCII和BCD代码转换;数据范围判断(0~9、A~Z、a~z) • 字母大小写转换 • 字符串传送、比较等操作 • 求最小最大值 • 数据求和 • 统计字符个数
伪指令 • OFFSET • SEG/ORG • DB/DW/DD • PTR • SEGMENT/ENDS/END/ASSUME • FAR/NEAR 例: BUF DB 12H,56H,78H N EQU $-BUF;N=0003H MOV BX,OFFSET BUF;(BX)=0000H MOV AL,BUF+1;(AL)=56H MOV DX,WORD PTR [BX];(DX)=5612H
例1:将DAT1开始的10个字节传送到DAT2开始单元。 MOV SI,OFFSET DAT1 ;SI指向源串地址 MOV DI,OFFSET DAT2 ;DI指向源串地址 MOV CX,10 ;置计数器 CLD ;清方向标志 REP MOVSB ;将源地址的10个字传送到目的地址单元 例2:假设将1000H:2000H开始的10个数据传送到1000H:2005H开始单元,编程。 MOV SI,2000H MOV DI,2005H ADD SI,10-1 ADD DI,10-1 MOV CX,10 STD REP MOVSB
例3.从地址为BLOCK开始单元,存放100个字节的字符串,找出第一个字符 $ (ASCII码24H),将$的第一个地址存入BX中,否则将BX清零. LEA DI, BLOCK ;送目标串首地址 MOV CX, 100 CLD ;清方向标志 MOV AL, ‘$’ REPNZ SCANB ;AL - [DI] JZ FOUND ;找到$,转 MOV BX,0 JMP STOP FOUND: DEC DI ;退回到$所在地址 MOV BX,DI ;$所在地址送BX STOP: HLT
例4: 求和Y=A1 + A2 + …. + A100 Ai是字变量。 设CX: 计数器,循环次数 BX: 数据指针DX, AX: 存和 XOR AX, AX ;清AX MOV BX, OFFSET TABLE MOV CX, 100 CLC LP: ADD AX, [BX] ;求和 JNC DON INC DX CLC DON: INC BX INC BX ; 指向下一个数 LOOP LP ;未加完,继续 MOV YAL,AX ;存和 MOV YAH,DX