? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
第1章 绪论 1、微型计算机:
– 以微处理器(CPU)为核心,配上大规模集成电路的存储器(ROM/RAM)、
输入/输出接口电路及系统总线等所组成的计算机。
2、三组总线 地址总线AB
– 单向,位数n决定CPU可寻址的内存容量 数据总线DB
– 双向,CPU与存储器、外设交换数据的通路 控制总线CB
– 双向,传输控制信号和状态信号
3、各进制数间的转换
非十进制数到十进制数间的转换
按相应进位计数制的权表达式展开,在按十进制求和。 如:1011 0111B=(183)D; 14FBH=(5371)D 十进制数到非十进制数的转换 (1)十进制到二进制
整数部分:除2取余 小数部分:乘2取整 例如:12.125D
=(1100.001)B (2)十进制到十六进制的转换 整数部分:除16取余 小数部分:乘16取整 二进制与十六进制间的转换
用4位二进制数表示1位十六进制数 例如:(0101 1000 1001.1100)B =(5 8 9.C)H
划分的时候以小数点位分界线,整数部分从最低位开始划,前面不够补零,不影响大小
小数部分从最高位开始,后面不够补零,也不影响大小 第2章 8086 CPU
2、8086CPU内部寄存器
3、8086微处理器的标志寄存器 8086 CPU中的标志位-状态标志 FLAGS寄存器中共有6个状态标志位
– CF,进位标志。
– PF位,奇偶校验标志。 – AF,辅助进位标志。
? ?
? ? ?
– ZF,全零标志。 – SF,符号标志。 – OF ,溢出标志位。
8086 CPU中的标志位- 控制标志 FLAGS寄存器中共有3个控制标志位
– TF,单步标志。 – IF,中断标志。 – DF,方向标志。
题1:已知某存储单元所在的段地址为1900H,偏移地址为8000H,试求出该单元所在的物理地址? 第二章作业
第2题:8086CPU内部由那两部分组成?他们大致是如何工作的? 8086 CPU由指令执行单元和总线接口单元两部分组成。 工作过程: 1)读存储器
2)EU从指令队列中取走指令,经EU控制器译码分析后,向各部件发控制命令,以完成执行指令的操作
3)指令队列满,则BIU处于空闲状态
4)指令执行过程中,如果需要进行存取数据,EU就要求BIU完成相应的总线周期 5)在程序转移时,先清空队列,再去新的地址处取指。 6)ALU完成算术运算、逻辑运算或移位操作
第7题 已知段地址:偏移地址分别为如下数值,他们的物理地址各是什么? (1)1200:3500H=15500H (2)FF00:0458H=FF458H (3)3A60:0100H=3A700H
第13题8086工作于最小模式时,硬件电路主要由哪些部件组成?为什么要用地址锁存器,数据缓冲器和时钟产生器?
8086工作于最小模式时,硬件电路主要由1片8086 CPU、1片8284时钟发生器、3片74LS373锁存器和2片74LS245双向数据缓冲器组成。
用地址锁存器的原因:先传送地址信号,因为与数据和状态信号复用,如果不锁存则会丢失地址信息。
用数据缓冲器的原因:如果总线上负载超过10个,单独靠总线不能驱动,需要加总线驱动器提高带负载能力。
用时钟产生器的原因:产生系统的时钟信号,对READY和RESET信号进行同步。 第18题8086工作于最小模式,执行存储器读总线周期,T1~T4周期中主要完成哪些工作?
8086工作于最小模式,执行存储器读总线周期,T1~T4周期中主要完成: T1周期:输出20位地址信号,ALE地址锁存允许信号高电平有效。 T2周期:高4位输出状态信号,低16位高阻态,准备接收数据。 T3周期:高4位维持状态信号,低16位接收数据。 T4周期:读总线周期结束。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
第3章 8086的寻址方式和指令系统 一、掌握七种寻址方式 1. 立即数寻址(P48)
8086 CPU指令系统中,有一部分指令所用的8位或16位操作数就在指令中提供,这种方式叫立即数寻址方式。 ? 例如: MOV AL,80H MOV AX,1090H
? 立即数寻址方式的显著特点就是速度快。 ? 2. 寄存器寻址(P49)
? 如果操作数就在CPU的内部寄存器中,那么寄存器名可在指令中指出。这种寻址方
式就叫寄存器寻址方式。 ? 3. 直接寻址(P49)
? 4. 寄存器间接寻址(P51)
? 采用寄存器间接寻址方式时,操作数一定在存储器中,存储单元的有效地址由寄存
器指出,这些寄存器可以为BX,BP,SI和DI之一,即有效地址(EA)等于其中某一个寄存器的值:
? 5. 寄存器相对寻址(P52)
? 采用寄存器间接寻址方式时,允许在指令中指定一个位移量,有效地址(EA)就通
过寄存器内容加上一个位移量来得到,这种寻址方式叫寄存器相对寻址: ? 6 基址加变址寻址(P53) 通常将BX和BP称为基址寄存器,将SI和DI称为变址寄存器。基址加变址的寻址,操作数的有效地址(EA)等于基址寄存器(BX或BP)的内容加上一个变址寄存器(SI或DI)的内容。即:
EA = [BX] [SI] [BP]+[DI]
? 7 相对的基址加变址寻址(P53) 在基址加变址寻址方式中,也允许带一个8位或16位的偏移量,其和值构成有效地址,这种寻址方式叫相对的基址加变址寻址。即: EA = [BX] [SI] 8位偏移量 [BP]+[DI]+16位偏移量
? 例如:
– MOV AX, 0003[ BX ][ DI ] – MOV [ BP + SI + COUNT ], BL
? 二、最基本的传送指令MOV (P62)
? MOV指令是形式最简单、用得最多的指令。 ? MOV指令的几点说明: (1)MOV DS ,CS ;错误 MOV [16H] ,[20H] ;错误
? 三、加法指令
(1) 不带进位位的加法指令:
ADD用来执行两个字或两个字节的相加操作,结果放在原来存放目的操作数的地方。
? (2) 带进位位的加法指令
ADC指令被执行时,将进位标志CF的值加在和中。
? ? ? ?
四、过程调用与返回 过程调用:CALL 过程名 返回指令:RET 第三章作业 第1题
注意逗号后面是源操作数,逗号前面是目的操作数 第6题
要掌握每种错误的原因和改正方法 第9题
学会用箭头方式表示指令功能
第12题编程将AX寄存器中的内容以相反的次序传送到DX寄存器中,并要求AX中的内容不被破坏,然后统计DX寄存器中1的个数是多少。(提示:先通过左移指令,将AX内容逐位移入CF中,检查其是否为1,再通过右移指令,移入DX) ? mov cx,16 ? mov bx,0 ? mov dx,0 ? l2: rol ax,1 ? jnc l1 ? inc bx
? l1: rcr dx,1 ? loop l2
? 第4章 微型计算机汇编语言及汇编程序 ? 一、汇编语言的两种语句
? 指令性语句——由8086指令助记符构成的语句,由CPU执行,每一条指令性语句
都有一条机器码指令与其对应;
? 指示性语句——由伪指令构成的语句,由汇编程序(MASM)执行,指示性语句无机器
码指令与其相对应。
? 二、数据定义伪指令(P121)
用于定义变量,即内存单元或数据区。数据定义伪指令的格式为: 变量名 数据定义伪指令 操作数,操作数,… 常用的数据定义伪指令有如下几种: DB 定义字节 DW 定义字 DD 定义双字
? 操作数可以是常数、变量 ? 第四章作业
? 第3题伪指令语句的作用是什么?它与指令语句的主要区别是什么?
? 伪指令语句作用:汇编时完成某些特定功能,如段定义、变量定义、过程定义等。 ? 与指令语句区别:指令性语句——由8086指令助记符构成的语句,由CPU执行,
每一条指令性语句都有一条机器码指令与其对应;
? 指示性语句——由伪指令构成的语句,由汇编程序(MASM)执行,指示性语句无机器
码指令与其相对应。 ?
? 第7题给出完整的汇编语言程序设计框架,并说明其中每条伪指令语句的功能。
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
DATA SEGMENT ;数据段 STRING DB …… DATA ENDS
STACK SEGMENT PARA STACK ‘STACK’; 堆栈段 STA1 DB 100 DUP(?) STACK ENDS
CODE SEGMENT ;代码段 MAIN PROC FAR ;主程序
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX, DATA MOV DS, AX ;送数据段地址 ……
MAIN ENDP CODE ENDS END START
? 第13题某个学生的英语成绩已存放在BL中,如果低于60分,则显示F(Fail),如
高于或等于85分,则显示G(Good),否则显示P(Pass),试编写完成的汇编语言程序来实现。 ? DATA SEGMENT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
;此处输入数据段代码 DATA ENDS
STACK SEGMENT
;此处输入堆栈段代码 STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START:
MOV AX,DATA MOV DS,AX cmp bl,60 jb lop1 cmp bl,85 jb lop2 mov dl,'G' mov ah,2 int 21h jmp end1 lop1:mov dl,'F' mov ah,2 int 21h
jmp end1 lop2:mov dl,'P' mov ah,2