汇编期末总结
虽然汇编斜体样式不会编 ,期末总结还是要做好。
些许有些混乱的总结:
NO.1
数据传送过程的3个步骤:
①CPU先读取状态字
②检查状态字是否表明数据准备就绪
③如果准备就绪,则执行输入指令读取数据,且使状态位清零。这样便开始下一个数据传输过程。
NO.2
输出过程:
当前输出设备空闲时,状态标志触发器清0。
CPU在输出数据之前,先读取状态信息。假设忙闲标志接至数据线D0位,当D0=0时,表示输出设备空闲,CPU再对数据口执行输出指令。
数据口选中信号一方面把输出数据写入锁存器,一方面使状态标志触发器置1,通知输出设备。当输出设备取走当前数据后,向接口发出确认信号ACK,使状态标志触发器清0, 表示输出设备空闲。
NO.3
地址总线AB
是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小。
NO.4
最小模式
读:T1 状态——输出 20 位存储器地址 A19~A0 IO/M输出低电平,表示存储器操作; ALE 输出正脉冲,表示复用总线输出地址 T2 状态——输出控制信号 RD T3 和 Tw 状态——检测数据传送是否能够完成 T4 状态——前沿读取数据,完成数据传送
写:T1 状态——输出 20 位存储器地址 A19~A0 IO/M输出低电平,表示存储器操作; ALE 输出正脉冲,表示复用总线输出地址
T2 状态——输出控制信号 WR和数据 D7~D0
T3 和 Tw 状态——检测数据传送是否能够完成
T4 状态——完成数据传送
最大模式
NO.5
中断过程
1.中断请求 2.中断响应 2.关中断 4.断电保护 5.中断源识别 6.现 场保护 7.终端服务 8.恢复现场 9.开中断 10 中断返回
NO.6
一些概念:
NO.1
指令:
计算机能接受的最小命令,例如:加,减,乘,除,转移等 代码指令:与某条指令对应的二进制代码,或指令的数据表示 机器指令程序:代码指令依照某种算法并按照一定语法规则而作有序的排列 汇编指令:汇编语言规定的基本符号,每条机器指令都对应一条符号指令 汇编语言: 用符号表示指令的操作码和地址码的程序设计语言,面向机器的 语言,亦称符号语言 汇编程序:把汇编指令翻译成机器指令的系统程序 汇编语言源程序:依据一定的算法并按照语法规则,把汇编指令作有序的排 列 汇编:将汇编语言译成机器语言 反汇编:将机器语言译成汇编语言 地址 有效地址 有效地址 EA 是 16 位无符号数,表示操作数所在单元到段首距离 即逻辑地址的偏移地址 实际地址 物理地址 等于有效地址+段地址 存储器中存储单元对应实际地址称物理地址
NO.2
变量名的属性:段属性 SEGMENT 位移属性 OFFSET 类型属性 TYPE (DB1 个字节 DW2 个字节 DD4 个字节 )
NO.3
寻址方式寻址方式种类(32 位、16 位) 操作数类型 存储器的存放规则
寻址方式种类:固定寻址、立即寻址(注意高字节存放的高地址,低字节存放在 低地址)、寄存器直接寻址(实质指它存放的内容)、存储器直接寻址、寄存器间 接寻址、变址寻址 操作数类型:立即操作数、寄存器操作数、内存操作数
NO.4
指令系统:操作数搭配的 7 个规则
1.两个操作数要求字长匹配一致。 2.两个操作数不能同为 M,不能同为段 R(PUSH、POP、MOVS、CMPS 除外)。 3.目的操作数不能取 DATA。 4.十六进制数以字母开头时,需要在前面加 0,以示与符号、助记符、变量名、 标号等区别。 5.存储器操作数可以是字节、字、双字,类型不确定,需要用 PTR 说明。 6.绝大部分指令不用段 R(MOV、PUSH、POP 除外)。 7.传送指令绝大部分不影响标志位(除 SAHF、POPF 外)。主要是算术、逻辑 运算指令影响标志位。
简答题:
1.什么叫寻址方式?常用的寻址方式有哪些?(5分)
寻址方式是指寻找指令中操作数所在地址的方法。(2分)常用的寻址方式有立即寻址,直接寻址,寄存器寻址,寄存器间接寻址,变址寻址,基址加变址、隐含寻址等。(3分)
2.什么是变量,变量有哪些属性,如何使用这些属性?(5分)
变量是一个可存放数据的存储单元的名子,即存放数据存储单元的地址符号名。(2分)变量有三个属性:
〈1〉段属性(SEGMENT)变量段基址通常在定义变量的数据段的DS寄存器中。在指令中它们被隐含使用。(1分)
〈2〉偏移属性(OFFSET)是标号或变量所在地址距离段基址的偏移量值。它们在指令中以显示方式出现。(1分)
〈3〉类型属性(TYPE)指变量是按字节、字或双字操作。字节、字和双字分别用BYTE、WORD和DWORD定义。(1分)
3、什么是有效地址?什么是物理地址?如何由有效地址求得物理地址?
物理地址指CPU寻址主存时使用的20位地址,它确定了某一实际位置的内存单元。(2分)内存单元物理地址可由段址和段内的偏移量确定。内存单元在段内的偏移量称为有效地址(EA)。
物理地址=段址×16+段内的偏移量。(3分)
4、 指令正误判断,对正确指令写出源操作数的寻址方式,对错误指令指出原因(设VAR1, VAR2为字变量):
(1)PUSH 100H
(2)MOV BX,VAR1[SI]
(3)MOV AX, VAR1+VAR2
(4)SHL BL, 2
(5)MOV BYTE PTR[BX],1000
答:(1)PUSH 100H 错误 堆栈操作指令中不能用立即数作操作数
(2)MOV BX,VAR1[SI] 正确 寄存器相对寻址
(3)MOV AX, VAR1+VAR2 错误 两个变量名相加没有物理意义
(4)SHL BL, 2 错误 移位指令源操作数的值是1或CL的内容
(5)MOV BYTE PTR[BX],1000 错误 超范围
5、自BUFFER开始的缓冲区有6个字节型的无符号数:10,0,20,15,38,236,试编制8086汇编语言程序,要求找出它们的最大值、最小值及平均值,分别送到MAX、MIN和AVI三个字节型的内存单元。(要求按完整的汇编语言格式编写源程序并注释)
DATA SEGMENT
BUFER DB 10,0,20,15,38,236
MAX DB 0
MIN DB 0
AVI DB 0
DATA ENDS (2分)
STACK SEGMENT PARA STACK‘STACK’
DW 100 DUP (?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK (1分)
START: MOV AX,DATA
MOV DS,AX
LEA DI,BUFFER
MOV DX,0 ;使DH=0,DL=0
MOV CX,6
MOV AX,0 ; 和清0
MOV BH,0 ; 最大值
MOV BL,0FFH ; 最小值 (1分)
LOP1: CMP BH,[DI]
JA NEXT1 ; 若高于转移
MOV BH,[DI]; 最大值->BH
NEXT1: CMP BL,[DI] ;
JB NEXT2 ; 若低于转移
MOV BL,[DI]; 最小值->BL (1分)
NEXT2: MOV DL,[DI]; 取一字节数据
ADD AX,DX ; 累加和 (1分)
INC DI
LOOP LOP1 (1分)
MOV MAX,BH;送大值
MOV MIN, BL;送小值
MOV DL, 6
DIV DL, ;求平均值
MOV AVI, AL;送平均值 (2分)
MOV AX,4C00H
INT 21H
CODE ENDS
END START (1分)