微型计算机组成:微处理器,存储器,I/O接口电路;
计算机硬件系统:运算器,控制器,存储器,输入设备,输出设备。 总线:指计算机中各功能部件间传递信息的公共通道; 总线分类:数据总线(双向),控制总线(整体双向,局部单向),地址总线(单向)。 原码的
正数(符号位0)的原码,反码,补码相同;
负数(符号位1)的反码等于原码符号位不变,其余按位取反,补码等于反码加1。补码的补码等于原码。 特殊数:1000 0000(补码)表示-128
特殊数:1000 0000 0000 0000 (补码)表示-32768 物理地址=段地址x10H+段内偏移地址; 8086的总线周期由4个时钟周期组成。 BHE A0 对应操作 0 0 同时访问两个存储体,读/写一个字的信息,对于规则字(低位在偶地址,高位在奇地址)需要一个总线周期。 对于非规则字(低位在奇地址,高位在偶地址)需要两个总线周期 0 1 访问奇地址地址存储体,一个字节 1 0 访问偶地址地址存储体,一个字节 1 1 无操作 A0:选通存储器低位(偶地址)库,低电平有效。 BHE:选通存储器高位(偶地址)库,低电平有效。 CPU的中断响应包括两个总线周期,在每个总线周期中都从INTA端输出一个负脉冲,第一个总线周期的INTA负脉冲,用来通知中断源,CPU准备响应中断,中断源应准备好中断类型号。第二个总线周期的INTA负脉冲期间,外设接口应立即把中断源的中断类型号送到数据总线的低8位AD7-AD0上。
第四章 寻址方式 例子 立即数寻址 1050H 寄存器寻址 AX 直接寻址 [1064H] 存储器寻址 寄存器间接寻址 [SI/DI/BX] 特点:有[] 寄存器相对寻址 [SI/DI/BX/BP+10H] 基址变址寻址 [SI/DI+BX/BP] 基址变址相对寻址 [SI/DI+BX/BP+10H] I/O端口寻址 端口直接寻址 OUT 21H,AX IN AX,21H 端口间接寻址 OUT 21H,DX IN DX,21H 指令 易错点 MOV 1. 源操作数,目的操作数不能同为存储器操作数 2. 段寄存器必须通过AX修改 3. IP,CS不能做目的操作数 PUSH 1. 目的操作数不能是立即数 2. 目的操作数必须是16位 POP 1.目的操作数不能是立即数 2.目的操作数不能是CS 3.目的操作数必须是16位 XCHG 1. 源操作数,目的操作数不能同为存储器操作数 2. 段寄存器不能参加交换 3. 两操作数长度要一致 OUT 直接寻址00H-FFH,间接寻址必须用DX IN 直接寻址00H-FFH,间接寻址必须用DX ADD 1段寄存器不参加加减乘除运算 SUB 2源操作数,目的操作数不能同为存储器操作数 3目的操作数不能为立即数 DEC 1.单操作数指令,存储器操作数必须加确定其长度INC 的指令 LEA 1目的操作数必须是16位通用寄存器 2源操作数必须是存储器操作数 移位指令 1.单操作数指令,存储器操作数必须加确定其长度的指令 注意:堆栈向地址减小方向生长; 转移指令 转移条件 配合(CMP A,B AND A,B) JMP 无条件转移 JZ/JE 相等/前一个操作的寄存器等0 JNZ 前一个操作的寄存器不等0 测试无符号数 测试带符号数 JB JL 小于 JAE JGE 大于等于 JA JG 大于 JBE JLE 小于等于 第五章
标准方法返回DOS系统: PUSH DS MOV AX,0 PUSH AX
非标准方法返回DOS系统: MOV AH,4CH INT 21H
DOS功能调用:
1.子程序的入口参数送相应的寄存器 2.子程序编号送AH
3.发中断请求 INT 21H(系统功能调用指令) 1号功能调用(键盘有键按下,就读入响应的ASCII码) MOV AH,1 INT 21H 2号功能调用(显示DL中的ASCII码) MOV DL,待显示的ASCII字符 MOV AH,2 INT 21H 9号功能调用(显示以$结尾的字符串,字符串偏移地址在DX中) MOV DX,待显示字符串的首字符的偏移地址 MOV AH,9 INT 21H 第七章
中断处理过程:中断请求,中断响应,保护断点,中断处理,中断返回。
中断向量表:8086/8088有256种中断,每个中断服务程序的入口地址占用4个存储单元,低地址的两个单元存放地址偏移量(IP),高地址的两个单元存放段地址(CS).256*4=1024=1K,地址范围是00000H-003FFH。类型(0-4)他们已有固定用途,类型(5-31)系统保留,所以用户有224个自定义的中断。 中断入口地址=类型号x4 DOS功能调用法 直接装入法 PUSH DS; XOR AX,AX ;AX清零 MOV DX,OFFSET INT60 MOV DS,AX ;DS清零 MOV AX,SEG INT60 MOV AX,OFFSET INT60 MOV DS,AX MOV DS:[1080H],AX MOV AH,25H ;送功能号 MOV AX SEG INT60 MOV 60H ;送中断类型号 MOV DS:[1080H+2],AX INT 21H ;系统功能调用 POP DS ;恢复DS 例4.7 从偏移地址TABLE开始的内存区中,存放着100个字节型数据,要求将这些数据累加,并将累加和的低位存SUM单元,高位存SUM+1单元.
LEA BX,TABLE ;数据表地址指针送(BX) MOV CL,100 ;循环次数送
XOR AX,AX ;AX清零,CF清零
LOOPER:ADD AL,[BX] ;加一个数到AL
JNC GOON ;如果无进位,转到GOON INC AH ;有进位,AH加1 GOON: INC BX ;数据指针加1
DEC CL ;循环次数减1
JNZ LOOPER ;循环次数若不为0,转到LOOPER MOV SUM,AX ;AX送SUM,SUM+1 HTL ;结束
例 4.13一个数据块由大小写英文字符,数字和其他各种符号组成,结束符是回车符CR(ASII码为0DH),数据块得首地址为BLOCK1,将数据块传送到以BLOCK2为首地址的内存区,并将其中的小写字母转换为大写字母,其余不变。
LEA SI,BLOCK1 ;源地址指针送
LEA DI,BLOCK2 ;目标地址指针送DI CLD ;清方向标志DF NEXT:LODSB ;取一个字符到AL
CMP AL,0DH ;是否是回车符 JZ DONE ;是,则转DONG
CMP AL,61H ;否则,是否小于‘a’ JC OK ;是,转‘OK’
CMP AL,7BH ; 否则,是否大于‘z’ JNC OK ; 是,转‘OK’ SUB AL,20H ;否则AL减20H OK:STOSB ;送存
JMP NEXT ;转移到NEXT DONE:HTL ;停止 例4.16在内存中的数据段中存放了若干个8位带符号数,数据块得长度为COUNT,首地址为TABLE,试统计其中的正数负数,及零的个数,并分别将统计结果存入PLUS,MINUS,ZERO单元。 XOR AL,AL ;AL清零 MOV PLUS,AL ;PLUS清零 MOV MINUS,AL ; MINUS清零 MOV ZERO,AL ; ZERO清零
LEA SI,TABLE ;数据表首地址送SI MOV CX,COUNT ;循环次数送CX CLD ;清方向标志DF CHECK:LODSB ;取一个字符到AL OR AL,AL ;使数据影响标志位
JS X1 ;如为负,转X1 JZ X2 ;如为0,转X2
INC PLUS ;否则为正,PLUS加1 JMP NEXT ;
X1:INC MINUS ;MINUS单元加1 JMP NEXT ;
X2:INC ZERO ;ZERO单元加1
NEXT:LOOP CHECK ;CX减1不为0.转CHECK
HTL ;结束
例 4.17在以DATA1为首地址的内存数据中,存放了200个16位带符号数,将其中的最大数和最小数找出来,分别存放在MAX,MIN单元中。
LEA SI,DATA1 ;数据块首地址送SI MOV CX,200 ;循环次数送CX CLD ; 清方向标志DF LODSW ;读一个字到AX MOV MAX,AX ;送MAX单元 MOV MIN,AX ;送MIN单元 DEC CX ;循环次数减1 NEXT:LODSW ;读一个字到AX
CMP AX,MAX ;与MAX单元内容比较 JG GREATER ;大于MAX,转GREATER CMP AX,MIN ;与MIN单元内容比较 JL LESS ;小于MIN 转LESS JMP GOON ;转GOON
GREATER:MOV MAX,AX ; AX送MAX单元
JMP GOON ;
LESS:MOV MIN,AX ; AX送MIN单元 GOON:LOOP NEXT ;
HLT ;结束
例5.8 求两个数的平均值。这两个数分别放在x单元和y单元中,例 5.12从xx单元开始的30个连续单元中存放有30个无符号数,而平均值放在z单元中。 DATA SEGMENT
x DB 95 ; y DB 87 ; z DB ? ; DATA ENDS ; CODE SEGMENT ; MAIN PROC FAR ; ASSUME CS:CODE,DS:DATA ;
START:PUSH DS ;标准法返回DOS
MOV AX,0 ;标准法返回DOS PUSH AX ;标准法返回DOS MOV AX,DATA ;装填段寄存器DS MOV DS,AX ;
MOV AL,x ;第一个数送入AL
ADD AL,y ;两数相加,结果送入AL MOV AH,0 ;
ADC AH,0 ;带进位加法,进位送入AH MOV BL,2 ;除数2送入BL DIV BL ;求平均值送AL MOV z,AL ;结果送入Z单元 RET ;标准法返回DOS MAIN ENDP ; CODE ENDS ;
END START ;
例 5.10给定以下符号函数y=1(x>0),y=0(x=0),y=-1(x<0)
给定任意x值,假定是-25,存放在x单元中,函数值存放在y单元中,根据x的值确定函数y的值。 DATAX SEGMENT
x DB -25 ; y DB ? ; DATAX ENDS ; CODEX SEGMENT ; MAIN PROC FAR ; ASSUME CS:CODEX,DS:DATAX ;
START:PUSH DS ;标准法返回DOS
MOV AX,0 ;标准法返回DOS PUSH AX ;标准法返回DOS MOV AX,DATAX ;装填段寄存器DS MOV DS,AX ;
MOV AL,x ;x送入AL CMP AL,0 ;比较AL和0
JGE LOOP1 ;如果大于等于0,转LOOP1 MOV AL,0FFH ;将-1送AL
MOV y,AL ;否则AL小于零,y=-1 RET ;标准法返回DOS
LOOP1:JE LOOP2 ;如果等于零,转LOOP2
MOV AL,1
MOV y,AL ;不等0则AL大于0,y=1 RET ;标准法返回DOS LOOP2:MOV AL,0
MOV y,AL ;y=0
RET ;标准法返回DOS MAIN ENDP ; CODEX ENDS ;
END START ; 从中找出最大数送入yy单元。 DATASP SEGMENT
xx DB 73,59,61,45,81,107,37,25,14,64,3,17,9,23,55,97,115 DB 78,121,67,215,137,99,241,36,58,87,100,74,62, yy DB ? DATASP ENDS
CODEX SEGMENT ; MAIN PROC FAR ; ASSUME CS:CODESP,DS:DATASP
START:PUSH DS ;标准法返回DOS
MOV AX,0 ;标准法返回DOS PUSH AX ;标准法返回DOS MOV AX,DATASP ;装填段寄存器DS MOV DS,AX ;
MOV AL,xx ;首数据送AL
MOV SI,OFFSET xx ;数据段指针送SI等价LEA SI,xx MOV CX,29 ;循环次数送CX
LOOP1:INC SI ;数据指针加1
CMP AL,[SI] ;比较AL和指向数据
JAE LOOP2 ;如果AL大于等于[SI],转LOOP2 XCHG AL,[SI] ;否则AL小于[SI],交换
LOOP2:DEC CX ;循环次数减1,等价LOOP LOOP1
JNZ LOOP1 ;循环次数不为0,等价LOOP LOOP1 MOV yy,AL ;AL送yy
RET ;标准法返回DOS MAIN ENDP ;
CODESP ENDS ;
END START ;
例5.13 从自然数1开始累加,直到累加和大于1000为止,统计被累加的自然数的个数,把统计的个数送入n单元,把累加和送入sum单元。 DATAS SEGMENT
n DW ? sum DW ?
DATAS ENDS
CODES SEGMENT ; MAIN PROC FAR ; ASSUME CS:CODES,DS:DATAS
START:PUSH DS ;标准法返回DOS
MOV AX,0 ;标准法返回DOS PUSH AX ;标准法返回DOS MOV AX,DATAS ;装填段寄存器DS MOV DS,AX ;
MOV AX,0 ;累加和AL清零 MOV BX,0 ;自然数数据加1 MOV CX,0 ;累加数个数CX清零
LOOPT:INC BX ;数据加1
ADD AX,BX ;累加
INC CX ;累加个数加1
CMP AX,1000 ;累加和和1000比较
JBE LOOPT ;如果小于等于1000,转LOOPT MOV n,CX ;CX送n MOV sum,AX ;AX送sum
RET ;标准法返回DOS
MAIN ENDP ; CODES ENDS ;
END START ;
中断处理过程:中断请求 中断响应 保护现场 中断处理 中断返回 如何利用中断向量表执行中断服务程序?
中断向量表是存放中断向量的一个特定内存区域,而中断向量是中断服务程序的入口地址。Cpu响应中断时,把中断类型号n×4,得到对应的地址4n,然后把由此开始的两个低字节单元(4n,4n+1)的内容装到IP寄存器,再把高字节单元(4n+2,4n+3)的内容装到CS寄存器,接着cpu转入执行中断各类型号为n的中断服务程序。 中断结束方式的比较:
中断自动结束方式:①在第二个INTR’负脉冲的后沿即完成对应的IsR位的复位,是在中断响应后,不是在中断结束后。若中断请求出现,且IF=1,无论中断优先级如何,都将得到响应。②适合于中断请求信号持续的时间有一定限制以及不出现中断嵌套的场合。
一般中断结束方式:①中断服务程序结束时,cpu向8259A发常规中断结束命令,将8259A的ISR的最高优先级的IS位,对应于当前正在处理的中断,将其清0,若有中断请求,对同级或低级中断不处理。②适用于全嵌套方式下。 Cpu与外设之间的数据传送方式的特点描述: ①
无条件传送方式:工作时,认为输入设备随时准备好向cpu提供数据,输出设备随时准备好接受cpu送来的数据。
优点:程序设计和接口电路简单,适合于少量的数据传送 缺点:传送数据不能太频繁 ②
查询传送方式:执行输入/输出指令前,先查询相应设备的状态,当输入设备处于准备好状态,输出设备处于空闲状态时,执行输入/输出指令与外设交换信息。 优点:保证了主机与外设的协调同步工作,硬件线路简单,程序易实现 缺点:cpu利用率不高 ③
中断传送方式:外设向cpu发送中断请求,cpu暂停正在执行的程序,转去执行数据的输入/输出操作,数据传输结束后,cpu再继续执行被暂停的程序。 优点:cpu不必查询等待,工作效率高,cpu与外设并行工作,系统实时性好 缺点:接口电路复杂 cpu时间浪费很多 ④
DMA(直接存储器存取)传送方式:传送过程无需cpu的介入,由DMAC对传送过程控制和管理,cpu放弃总线控制权由DMAC控制,传送结束后DMAC再将总线控制权交给cpu 优点:数据传送速率非常高
因篇幅问题不能全部显示,请点此查看更多更全内容