东南大学-微机原理-两A4.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《东南大学-微机原理-两A4.pdf》由会员分享,可在线阅读,更多相关《东南大学-微机原理-两A4.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、立即数段寄存器存储器通用存储器利用 XLAT 指令将十进制数字 0-9 转换成七段代码,试编程求数字 5 的七段代码,结果存在 AL 中。执行前:BX- 表头地址AL- 表头地址和要查找项之间的偏移量执行后:AL- 表中查到的内容TABLE: DB 40H. LEA BX,TABLE MOV AL,5 XLATLAHF 标志寄存器低字节 AHSAHF AH 标志寄存器低字节ADD 目的 + 源源:寄存器,存储器,立即数目的:寄存器,存储器! 源和目的不能同时为存储器 操作数字节相等INC BL ;BL 寄存器中内容增 1INC BYTE PTRBX ;内在字节单元内容增 1INC WORD P
2、TRBX ;内在字单元内容加 1不影响 CF微型计算机是由 CPU、I/O 接口、 存储器 和系统总线组成。BIU 完成一次访问存储器或 I/O 端口的时间称为总线周期最基本的总线周期是由 T1T4 个时钟周期组成读周期:T1:CPU 通过 A19/S6A16/S3、AD15-AD0 这 20 调线向存储器输出指定地址。T2: 进入高阻态,提供缓冲功能,使得 AD 线由输出地址变成输入数据信号。T2-T4 状态从 A19/S6A16/S3 均为输出状态信号T3、T4:CPU 从 AD15-AD0 引脚上接收指定地址单元的内容写周期:与读总线周期类似, 不同的是T2周期就从AD15-AD0输出数
3、据。ready 由 8284 产生 当 cpu 和慢速 I/O 或存储设备交换数据,ready=0, 则在 T3 后插入 1n 个等待周期 TW 知道 ready=1,下个周期进入 T4TEST 上划线 5 个 T 状态检查一下 高则进入等待状态凡涉及到存储器操作时,可使用的寄存器包含:SP,BP,SI,DIBP: 在堆栈操作中,指示堆栈中一个数据区的偏移地址,可用于访问对战中的某个数据。进行字符串操作时,源串地址通常由 DS:SI 指定,目的串地址必须由 ES:DI 给出最小模式:系统中只有 8086 或 8088 一个微处理器所有的控制信号直接由 CPU 产生或接收。最大模式:系统中允许有
4、多个处理器共同工作有的控制信号直接由 CPU 产生或接收。而有些则需要 8288 总线控制器经过译码后产生8086指令系统SI=1000HLEA BX,【SI】;(BX=1000H)ADAA 压缩 BCD 码加法十进制调整AAS 减发 ASCII 码调整 DAA 加法十进制调整AAM 乘法 ASCII 码调整指令如果源操作数为字节;16 位被除数必须放在 AX 中,8 位出书可以使寄存器或存储单元,相除之后 8 位商在 AL 中,余数在中如果被除数只有8位, 必须把它放在AL中, 并且将AH清0,然后相除。相除之后,8 位商仍在 AL 中,余数在 AH 中。XOR 异或IMUL 整数乘法IDI
5、V 整数乘法CBW 把字节转换成字CWD 把字节转换成双字XHG 交换可以在寄存器之间或者寄存器和存储器之间进行,但段寄存器不能做操作数正确指令:XCHG AX,BXXCHG BI,CL错误指令:XCHG AX,OAF4HXCHG SS,SIXCHG SI,BX+1算术逻辑移位指令SAL,SHL,SHR,SAR目的操作数可以使 8、16 位寄存器或存储器计数值为移位次数当移位次数 =1 时,在指令中间可直接给出例 SHL AL,1当移位慈湖1时, 就必须将移位次数先送入C寄存器中,列: MOV CL,3 SAR AL,CLSAL/SHL:最低有效位补 0,最高位进入标志位 CFSHR:最高有效
6、位补 0,最低位进入标志位 CFSAR:最高位保持不变,最低位进入 CF,相当于带符号数除 2ROL RORRCL RCR字符串源串始址为 DS:SI,允许用段超前缀修改源串断地址DS。目的串始址为 ES:DI,禁止用段超越前缀修改目的串地址 ES。每执行一次字符串指令, 指针SI和DI会自动进行修改,以使指向下一个带操作的单元DF 标志位控制字符串处理方向。DF=0 为递增方向,CLD 指令使 DF 清 0字节串操作,SI,DI 自动增加 1;CMPS 用来比较两字符串是否相等加 REPE/REPZ,当两串相等和 CX 不等于 0,则重复比较加 REPNE/REPNZ 时候,当两船不相等和
7、CX 不等于 0,则重复比较SCAS:AL 或 AX 寄存器的内容减去附加段中以 DI 为指针的目的元素,结果反映在标志位上,但不改变源操作数。被搜索的字称为关键字,指令执行前必须将它存在 AL或 AX 中。指令前也可以加重复前缀。LODS:将 DS:SI 指向的源串中的元素送到 AX( 字操作 ) 或 AL(字节操作)中,并修改 SI。加重复前缀无意义,因累加器只能存储一个数据重复操作后也只保留最后写入的数据。STOS:指令功能:将累加器 AL 或 AX 中的一个字节或字,传送到附加段中以 DI 为目标值真的目的串中,同时修改 DI,一直想串中的下一个单元。 STOS 指令与重复前缀 REP
8、 连用,能够方便地使用累加器中的一个常数对一个数据串进行初始化例如将一个串初始化为 0.控制转移8250数据出送方向:单工传送,半双工传送,全双工传送基本工作方式:、异步工作方式,同步工作方式异步通信:两字符之间的传输间隔是任意。接收方的时钟频率和发送方的时钟频率不必完全一样。同步通信:发送和接收端时钟同步,信息帧每一帧开始是同步字符,没有信息要填上空白字符,同步传输过程中字符之间不允许有间隙波特率 = 每秒传送的数据位数波 特 率 =10 位 / 字 符 *240 字 符 / 秒 =2400 位 / 秒=2400 波特波特率系数 - 波特率系数的值等于收发数据的时钟 CLK/波特率若 CLK
9、=19200 波 特 率 系 数 =16; 则 波 特 率=19200/16=1200. 发送保持寄存器 (3F8H) 发送时,CPU 将待发送的字符写入发送保持寄存器中,其中第 0 位是串行发送的第 1 位数据。 2. 接收数据寄存器 (3F8H) 该寄存器用于存放接收到的 1 个字符。3. 线路控制寄存器 (3FBH):该寄存器规定了异步串行通信的数据格式4. 线路状态寄存器 (3FDH) 该寄存器向 CPU 提供有关数据传输的状态信息。5. 6. 波特率因子寄存器 (3F8H,3F9H) 8250 芯片规定当线路控制寄存器写入 D7=1 时,接着对口地址 3F8H、3F9H 可分别写入波
10、特率因子的低字节和高字节,即写入波特率因子寄存器 (L) 和 (H) 中。波特率因子 1843200/(16 波特率 )7. 中断允许寄存器 (3F9H)该寄存器允许 8250 4 种类型中断 ( 相应位置 1),并通过 IRQ4 向 8088CPU 发中断请求。数据传送出错中断(奇偶错,帧错,停顿等)接收缓冲器有数据中断发送保持器为空中断MODEM 状态(CTS,DSR,RI,RLSD)改变中断高低. 中断标识寄存器 (3FAH) 可以用来判断有无中断与哪一类中断请求。线路控制寄存器D7位A2 A1 A0被访问寄存器地址(以首地址3F8H为例)00 0 0接收缓冲器(读)发送缓冲器(写)3F
11、8H00 0 1中断允许寄存器3F9HX0 1 0中断标志寄存器(只读)3FAHX0 1 1线路控制寄存器3FBHX1 0 0MODEM控制寄存器3FCHX1 0 1线路状态寄存器3FDHX1 1 0MODEM状态寄存器3FEH10 0 0除数寄存器(低字节)3F8H10 0 1除数寄存器(高字节)3F9H寻址方式地址线 A0 A2 寻址 8250 内部的 10 个寄存器,为此:发送保持寄存器与接收缓冲寄存器共用一个地址,“写”信号有效访问发送保持寄存器,“读”信号有效访问接收缓冲寄存器。波特率因子寄存器(高低字节)与收发缓冲器以及中断允许寄存器地址相重,由线路控制寄存器的最高位指定当前访问的
12、寄存器。7.4.6 编程及应用初始化:(1) 设置波特率。 例如,设波特率为 9600,则波特率因子 N=12 MOV DX,3FBH; MOV AL,80H;通过线路控制寄存器 D7=1,设置波特率 OUT DX,AL MOV DX,3F8H MOV AL,12 OUT DX,AL; 写波特因子寄存器低字节 INC DX MOV AL,0 OUT DX,AL;写波特因子寄存器高字节,3F9H 送 02. 程序查询方式通信程序发送程序:读 LSR(3FDH)中 D5 位,检查发送保持器是否空(D5=1)TR: MOV DX, 3FDHIN AL, DX TEST AL, 20H JZ TR ;
13、 发送保持器不空,转 TR MOV AL, SI ; 发送保持器空 , 发下一数据 MOV DX, 3F8H OUT DX, AL接收程序:读 LSR(3FDH)中 D0 位 , 检查接收数据寄存器是否就绪 (D0=1)RE: MOV DX, 3FDH IN AL, DX TEST AL, 1 JZ RE ; 接收缓冲器不满,转 RE MOV DX, 3F8H ; 接收缓冲器满,读数据 IN AL, DX MOV DI, AL 3. 8250 应用举例例 按查询方式编制一个发送与接收程序,能将键入的每一个 ASCII 码字符发送出去,并显示在 CRT 上,同时能把接收到的每一个字符也以 ASC
14、II 码形式显示出来。设:数据传输速率为 9600 波特,通信格式为 8 位数据位,一位停止位,奇校验。KEY: MOV DX, 3FBH ;写 LCR MOV AL, 80h OUT DX, AL MOV DX, 3F8H ;送波特率常数 MOV AL, 12 OUT DX, AL ;低 8 位 INC DX MOV AL, 0 OUT DX, AL ;高 8 位 MOV AL, 0BH MOV DX, 3FBH OUT DX, AL ;写 LCR,设通信格式 MOV AL, 13H ;自发自收,RTS=1,DTR=1 MOV DX, 3FCH OUT DX, AL ;写 MCR,设置工作方
15、式CHECK:MOV DX, 3FDH ;读 LSR IN AL, DX TEST AL, 1 ;查接收缓冲器是否满? JNZ REV ;若满,转 REV TEST AL, 20H ;查发送保持器是否空? JZ CHECK ;若不空,继续查TR: MOV AH, 1 ;读键盘 INT 16H JZ CHECK ;无键按下,转 CHECK MOV DX, 3F8H OUT DX, AL ;有键入,发送 ASCII 码 JMP CHECK REV:MOV DX, 3F8H IN AL, DX ;读入接收字符 AND AL, 7FH ;屏蔽 D7 位 MOV BX,0041H ;第 0 页,红底蓝字
16、 MOV AH, 14 INT 10H ;显示字符 JMP CHECK 方式 0 计数结束中断方式在 gate=1 时候1, 写入 n 后,wrn 变低,out 变低2. 写信号的上升沿后经一个时钟脉冲下降沿将 n 装入计数器3. 每经过一个时钟下降沿计数器减 14.n=0 out 变高,信号可向 cpu 提出中断5.gate 的作用:当 gate=1 时候,允许计数;当 gate=0, 禁止计数当 gate 恢复高接着计数方式 1 可编程稳态输出方式 固定时长1.写入n后, 必须等gate上升沿才装入n, 这是out变低,开始计数2.n 计到 0,out 变高,负脉冲结束。负脉冲宽度 =tc
17、xn3. 计数中 gate 变低不影响,gate 产生上升沿从初值开始计数 方式 2 比特率发生器(产生序列负脉冲)脉冲产生器1. 写入 n,gate=1,开始计数2.n 减为 1,out 变低 ,n 减为 0,out 变高产生时钟3.fout=fclk/n4. 允许装入新的 n,下一个计数周期按 n 计5.gate 变低禁止计数,gate 变高 , 又从头开始计数方式 3 方波发生器(产生对称或基本对称的方波)1. 与方式 2 类似 fout=fclk/n2.n= 偶数 , 每个 clk, n-23.n= 奇数 ,out 为高 ,-1,-2,-2,out 为低 ,-3,-2,-2,-24.g
18、ate 同 21. 写入控制字后,OUT 端变为高电平,写入初始值后,计数器作减 1 计数,OUT 电平保持不变。2. 计数器减至 0 时,OUT 端输出一个脉冲周期的负脉冲,然后停止计数, 只有输入新的计数值后, 才能开始新的计数。3.计数过程中, 若GATE变低电平, 停止计数, 在其变高后,重新将 n 装入,开始计数。写入控制字后,OUT 端变为高电平,写入初始值 n 后,必须等待 GATE 的上升沿触发才转入计数。计数器减至 0 时,OUT 端输出一个脉冲周期的负脉冲。然后 n 值自动装入计数器,GATE 的上升沿来后才再次开始计数。82538255输入输出 8259C 端口置位复位控
19、制字方式选择字格式8253 控制字格式D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCD00 选择通知 001 选择通道 110 选择通道 211 无效00 计数器锁存,供 CPU 读取01 只读 / 计数器低字节10 只读 / 写计数高字节11 先读 / 写计数器低字节,后读/ 写高字节000 方式 0001 方式 1x10 方式 2x11 方式 3100 方式 4101 方式 51 BCD 编码0 2 进制数计数器 0:电子时钟基准工作于方式 3,计数器值预置为 0(即 65536),即输出的方波频率为:1.19/65536=18.21Hz,即每隔 55ms 产生
20、一次中断请求。程序: MOV AL,36H ;36H=00110110B OUT 43H,AL ; 写控制字 MOV AL,0 ; 预置计数值 OUT 40H,AL ; 先写低字节 OUT 40H,AL ; 再写高字节计数器 1:动态 RAM 定时刷新工作于方式 2,计数器值预置为 18, 即输出的频率为:1.19/18=66.1kHz,即每隔 15.1s 产生一次动态刷新请求信号。程序: MOV AL,54H ;54H=01010100B OUT 43H,AL ; 写控制字 MOV AL,12H ; 预置计数值 OUT 41H,AL ; 写低字节锁存计数MOV AL,01000000B ;
21、发锁存命令OUT 43H,AL IN AL,41H ;先读取低位计数值MOV AH,ALIN AL,41H ;后读取高位计数值XCHG AL,AHMOV BX,1000 ;求得实际计数值SUB BX,AX ;实际计数值在 BX 中A 和 B 端口既可以工作在同步方式,又可以工作在异步方式。C 端口除了作为工作在同步方式下的输入输出接口以外,还用做 A 口和 B 口的工作在异步方式下的联络信号 .MOV AL,00000100BOUT 63H,ALMOV AL,00000101B; 产生长脉冲OUT 63H,ALNOPNOP MOV AL,00000100B OUT 63H,ALTABLE DB
22、 0C0H,0F9H,OA4H,OBOH,99H,92H,82H,OF8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EHPORT_A EQU 0F0H ; 端口 A 地址PORT_B EQU 0F2H ;端口 B 地址PORT_CTL EQU 0F6H ; 控制端口地址 MOV DX,PORT_CTL ; 设 置 8255 工 作方 MOV AL,10011001B OUT DX,AL DISP: MOV DX,PORT_A ;读 A 口开关状态 IN AL,DX AND AL,0FH ;码表变换 LEA BX,TABLE XLAT MOV DX,PORT_B ;从
23、 B 口输出驱动 LED OUT DX,AL开关检测显示键盘接口电路8255A 初始化向 A 口各位输出 0各键均松开?有键按下?延时,消抖动键任压着?确定压键编码MOV DX,PORT_CTL ;A 口输入,B 口输出MOV AL,10000010BOUT DX,ALMOV DX,POTR_A MOV AL,00OUT DX,AL ; 向 A 口输出 0 MOV DX,PORT_BWAIT_OPEN: IN AL,DX ; 读口 AND AL,0FX ; 都是? JNE WAIT_OPEN ; 否键未松开WAIT_PRESS: IN AL,DX AND AL,0FH CMP AL,0FH ;
24、 低 4 位【列值】都为 1 ? JE WAIT_PRESS ; 全 1【无键按下】,等待 MOV CX,16EAH;DELAY: LOOP DELAYIN AL,DX ; 再读 B 口,看列值,查该键是否仍然压着AND AL,0FHCMP AL,0FHJE WAIT_PRESS MOV AL,0FEH ; 先使 D0=0 MOV CL,AL ;CL=11111110BNEXT_ROW: MOV DX,PORT_A ;A 口 OUT DX,AL ;向一行输出低电平 MOV DX,PORT_B ;B 口 IN AL,DX :读入 B 口状态 AND AL,0FH ;只截取列值 CMP AL,0F
25、H ;是否均为 1 ? JNE ENCODE ;否,表示有键压下,转去编码 ROL CL,01 ;均为 1,使下行输出 0 JMP NEXT_ROW ;查看下行ENCODE : MOV BX,000FH; 建立地址指针,指向 F 键盘 IN AL,DX ;从 B 口读入行列号NEXT_TRY:CMP AL,TABLEBX;与表中查得是否相等? JE DONE ; 相等,转出 DEC BX ;不等,指向下一个 JNS NEXT_TRY;地址尚未减为负值,计数 MOV AH,01 ;为负值,置出错码 01-AH JMP EXIT ; 退出DONE : MOV AL,BL ;BL 值等于键的 16
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 微机 原理 A4
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内