16/32位微机原理、汇编语言及接口技术教程部分习题解答

《16、32位微机原理、汇编语言与接口技术课程课后练习答案.doc》会员共享,可在线阅读。更多相关“16、32位微机原理”、汇编语言与接口技术教程课后练习Answers.doc(26页收藏版)”请在点石图书馆搜索。

1、16/32位微机原理、汇编语言与接口技术课程部分习题参考与解答第1章微机系统概述习题1.2什么是通用微处理器,单片机芯片微型计算机(微控制器)设备),DSP芯片,嵌入式系统? Answer 通用微处理器:适用于广泛应用的微处理器,例如安装在PC、笔记本电脑、工作站和服务器中的微处理器。单片机:指通常用于控制领域的微处理器芯片。除了CPU,它还集成了计算机的其他主要部件。它只需要配备少量的外部电路和设备,就可以形成一个特定的应用系统。 DSP芯片:称为数字信号处理器,也是一种微控制器,比较适合处理高速数字信号。它内部集成了一个高速乘法器,可以进行快速的乘法和加法运算。嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合

2、由特定应用组成的控制系统的典型特征是计算机直接嵌入到应用系统中。习题1.5 解释了微机系统各部分的硬件组成和功能。答 CPU:CPU,也叫处理器,是微机的核心。它采用大规模集成电路芯片,集成了控制器、运算器和多个高速存储单元(即寄存器)。处理器及其配套电路构成微机系统的控制中心,统一协调和控制系统的各个组成部分。内存:内存是存储程序和数据的组件。外部设备:外部设备是指可以与计算机交互的输入(Input)设备和输出(Output)设备,也称为I/O设备。 I/O 设备通过 I/O 接口连接到主机。总线:互连各种组件的公共通道,主要包括数据总线、地址总线和控制总线信号。习题1.6 什么是全数

3、线路?微机总线上的3组信号是什么?每组信号的作用是什么?回答总线:用于传递信息的共享通道,物理上是一组公共电线。 3组信号线:数据总线、地址总线和控制总线。 (1)地址总线:传输要访问的主存单元或I/O端口的地址信息。(2)数据总线:传输读写操作的数据信息。(3)@ >控制总线:协调系统中各个组件的操作。练习1.7简答以下概念:(1)计算机字长(2)指令取指解码执行周期(3)ROM-BIOS(4)中断(5)ISA总线解决方案(1)处理器单位时间内可以处理的二进制数据位数称为计算机字长。( 2)指令处理过程是指处理器从主存中读取指令(简称取指令),翻译指令码的功能(简称译码),然后执行指令指定的操作(称为执行)。

4、程。 (3)@>ROM-BIOS是“基本输入输出系统”,操作系统通过调用BIOS来驱动各个硬件设备,用户也可以在应用程序中调用BIOS中的很多函数。(4)Interrupt 是CPU的正常执行过程由于某种原因被中断并暂时停止的过程,转而执行预先安排好的处理程序,待处理程序结束后返回被中断的指令继续执行. (5)@ >ISA 总线是指IBM PC/AT 机器上使用的系统总线。练习1.8 以下十六进制数表示无符号整数,请转换成十进制形式的真值:(< @1)FFH ( 2)0H (3)@>5EH (4)EFH 解 (1)255(2)0(3)@>94(< @4)239练习1.9将以下真十进制值转换为压缩BCD:(1)12(2)24(3)@>

5、68 (4)99 答案 (1) 12H (2) 24H (3)@> 68H (4) 99H 练习1.@ >10 将以下压缩 BCD 码转换为十进制数: (1)10010001 (2)10001001 (3)@>00110110 (4)10010000Solution (1)91(< @2) 89 (3)@> 36 (4) 90 习题1.11 用 8 位二进制补码表示以下十进制数: (1)0 (2)@ > 127 (3)@>127 (4)57 答案(1) 00000000 (2) 01111111 (3)@> 10000001 (4) 11000111 练习1.@ > 12 数字09、大写字母AZ和小写字母az对应的ASCII码是什么?ASCII码0DH和0AH分别对应什么字符?回答数字09对

6、 对应的 ASCII 码为 30H39H。大写字母AZ对应的ASCII码是:41H5AH。小写字母az对应的ASCII码为:617AH。 ASCII 代码 0DH 和 0AH 分别对应回车符和换行符。第二章微处理器指令系统练习2.1 微处理器的三个基本部分是什么? 8088的两个功能部件是什么?它们各自的主要作用是什么?与 8 位 CPU 相比,为什么这种结构会提高其性能?应答算术逻辑单元ALU、寄存器组和控制器;总线接口单元BIU:管理8088与系统总线之间的接口,负责cpu对接口和外设的访问;执行单元EU:负责指令解码、执行和数据操作; 8-bit cpu 在解码指令之前,必须等待取指操作完成。 8088中需要解码的指令已经取到了。

7、指令队列,无需等待取指。而取指令是cpu最频繁的操作,所以8088的结构和操作方式节省了大量的等待时间,与8位cpu相比节省了时间,提高了性能。练习2.2 解释一下8088的8个8位和8个16位通用寄存器是什么?回答8个8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL; 8个16位寄存器:累加器AX、基地址寄存器BX、计数器CX、数据寄存器DX、源地址寄存器SI、目的地址寄存器DI、基地址指针BP、堆栈指针SP。练习2.4 给出了 CF 和 OF 标志之间的区别示例。解例:有一个运算:3AH+7CH=B6H作为无符号数运算,无进位,CF=0;作为有符号数运算,结果超出范围,OF=1.Exercise2.5什么是8088

8、 的逻辑地址和物理地址?逻辑地址如何转换为物理地址? 1MB可以分成多少个逻辑段?请用物理地址表示以下逻辑地址: FFFFH:0 40H:17H 2000H:4500H B821H:4567H Answer 物理地址:物理存储单元具有的唯一20位数字。逻辑地址:用在8088内部和用户编程中 以“段地址:偏移地址”的形式,将逻辑地址中的段地址二进制左移4位(对应十六进制为一位,即乘乘以16),加上偏移地址得到20位物理地址1MB最多可以划分为1MB16B22024216个逻辑段,因为每16字节单元可以开始一个逻辑段FFFFH:0FFFF0H 40H:17H00417H 2000H: 4500H2450

9、0H B821H:4567HBC777H练习2.8已知DS2000H、BX0100H、SI0002H,存储单元20100H20103H依次存储12H、34H、56H、78H,21200H21203H依次存储265AH、4CH、B7HH,序列,解释下面每条指令执行后AX寄存器的内容,以及源操作数的寻址方式? mov ax,1200h mov ax,bx mov ax,1200h mov ax,bx mov ax,bx+1100h mov ax,bx+si mov ax,bxsi+1100h 解决方案 mov ax,1200h; AX1200H,立即地址 mov ax,bx ;AX0100H,寄存器寻址 m

10、ov 斧头,1200h; AX4C2AH, 直接寻址 mov ax, bx; AX3412H,寄存器间接寻址 mov ax, bx+1100h; AX4C2AH, 寄存器相对寻址 mov ax, bx+si; AX7856H,基址索引寻址 mov ax,bxsi+1100h; AX65B7H,相对基索引寻址练习2.9 解释以下指令的具体错误原因 mov cx,dl mov ip,ax mov es ,1234h mov es,ds mov al,300 mov sp,ax mov ax,bx +di mov 20h,ah 回答(1)cx 是字寄存器,dl 是字节寄存器,类型不匹配。(2) @>mov 指令的目的操作数只能被注册

11、设备或主存单元,ip为指针。 (3)@>不允许立即数数据到段寄存器的传输。(4)不允许段寄存器之间的直接传输。(5)数据溢出。(6)sp不能用(7)格式不对。应该是:mov ax,bx+di(8)mov指令的操作数不能是立即数。练习2.10个已知数) 09 对应的格雷码为:18H, 34H, 05H, 06H, 09H, 0AH, 0CH, 11H, 12H, 14H,存在于以表为首地址的连续区域(设置为 200H)。下面的程序段给 的每条指令添加注释,说明每条指令的功能和执行结果。lea bx,tablemov al,8xlat answer lea bx,table; 得到表的首地址,BX200Hmov

12、 al,8;发送要转换的数字,AL8xlat;转换为格雷码,AL12H exercise2.11 给出执行以下指令后的AL值,以及CF、ZF、SF、OF、PF的状态:mov al,89hadd al,aladd al,9dhcmp al,0bchsub al,aldec alinc al 解决方案 mov al,89h;AL89H CFZFSFOFPFadd al,al;AL12H 10011add al,9dh;AL0AFH 00101cmp al,0bch; AL0AFH 10101sub al,al; AL00H 01001dec al; AL0FFH 00101inc al; AL00H 01001 练习2.12

13、请用汇编语言指令完成以下功能: 将BX寄存器和DX寄存器的内容相加,并将结果存入DX寄存器。使用寄存器 BX 和 SI 的基址索引寻址将一个内存字节添加到 AL 寄存器的内容,并将结果发送到 AL。使用 BX 的寄存器相对寻址方式和位移 0B2H 将内存中的一个字添加到 CX 寄存器的内容中,并将结果发送回内存。内存中的一个字通过位移0520H的直接寻址与数字3412H相加,并将结果送回存储单元。将数字 0A0H 添加到 AL 寄存器的内容中,并将结果发送回 AL 解决 add dx,bx add al,bx+si add bx+0b2h,cx add word ptr 0520h,3412h add a

14、l,0a0h练习2.13有四个16位有符号数,分别安装在X、Y、Z、V存储单元中。阅读下面的程序段,得到它的运算公式,并说明运算结果存放在哪里。 mov ax, Ximul Ymov cx, axmox bx, dxmov ax, Zcwdadd cx, axadc bx, dxsub cx, 540sbb bx, 0mov ax, Vcwdsub ax, cxsbb dx, bxidiv X 解 (V-(X*Y+Z-540)/Xexercise2.14给出以下指令的结果,以及状态标志CF、OF、SF、ZF、PF的状态。mov ax,1470hand ax,axor ax,axxor ax,axnot axtest ax,0

15、f0f0h answer mov ax,1470h;AX1470HCFZFSFOFPFand ax,ax;AX1470H00000or ax,ax;AX1470H00000xor ax,ax;AX0000H01001not ax;一条指令中的三种寻址方式是什么?回答相对寻址、直接寻址、间接寻址(也可分为寄存器间接、内存间接)练习2.16 假设DS2000H、BX1256H、TABLE的偏移地址为20A1H,物理地址232F7H存储3280H,问 在下一段内间接寻址的分支执行后,该分支的有效地址是多少?跳转

16、BX JMP TABLEBX answer (1)1256H(2)3280H 练习2.17 判断以下程序段跳转的条件 xor ax,1e1ehje equaltest al, 10000001bjnz therecmp cx, 64hjb there to answer AX1e1eh (D0 or D7 of 2)1@>AL after XOR 有至少一位 1CX (无符号数) 64h 练习 2.18 是软件延迟程序,请NOP How指令执行了多少次? xor cx,cxdelay: noploop delay 216习题的解法2.20 按照如下要求,编写相应的程序段: 起始地址为string的主存单元存放a字符串(如果长度大于6),则将字符串的第1个和第6个字符(字节

17、 数量)被传输到 DX 寄存器。有两个32位的值,按照“小端模式”分别存储在两个缓冲区buffer1和buffer2中,写入程序段完成DX.AXbuffer1buffer2函数。编写一个程序段,当DX的高4位全为0时,做AX0;否则制作 AX1。将DX.AX中的双字右移4位有一个100字节元素的数组,其首地址为数组,每个元素减1(不考虑溢出或借位)并原地存储。回答 (1)mov dl,string1mov dh,string6(2)mov ax, word ptr buffer1sub ax, word ptr buffer2;先减少16位mov dx, word ptr buffer1+2sbb

18、dx, word ptr buffer2+2;之后减少16位,需要减少16位借位(3)@>test dx,0f000hjz nextmov ax,-1jmp donenext:mov ax,0done:(4)mov cx ,4again:shr dx,1; 右移一位,移出的低位进入CF标志位 rcr ax,1; 将CF移入AX的高位,再次实现AX右移循环;循环4次,实现4位右移(5)mov cx,100mov bx,0again:sub arraybx,1inc bx 再次循环第3章汇编语言编程练习3.9给出如下语句,指令的值立即数(数值表达式):mov al,2

19、3h AND 45h OR 67h mov ax,1234h/16+10h mov ax,23h SHL 4 mov al,a AND (NOT(a-A) mov ax,(76543 LT 32768)异或 7654h 解 (1)al=67h(2)ax=133h,dx=4h(3)@>ax=0230h(4)al=41h(5)ax =7654h 练习3.10 画图说明下面语句分配的存储空间和初始化的数据值: byte_var db ABC,10,10h,EF,3 dup(-1,?,3 dup(< @4) word_var dw 10h,-5,3 dup(?) 答案(1)从低地址到高地址,每个字节是:

20、41h 42h 43h 0ah 10h 45h 46h ffh – 04h 04h 04h ffh – 04h 04h 04h ffh – 04h 04h 04h (2)从低地址到高地址,每个字节为:10h 0 FBh FFh – – – – – -其中“-”表示无初值,其实汇编器会填0。 练习3.11 请按如下要求设置一个数据段,定义变量:my1b为一个字符串变量,表示字符串“Personal Computer” my2b是一个十进制数表示的字节变量,这个数的大小是20 my3b是一个十六进制数表示的字节变量,这个数的大小是20 my4b是used 一个二进制数表示的字节变量,这个数的大小是20 my5

图片[1]-16/32位微机原理、汇编语言及接口技术教程部分习题解答-老王博客

21、w 是 20 个未分配的字变量 my6c 是 100 的符号常量 my7c 是字符串常量,而不是字符串“个人电脑” Answer my1bdb Personal Computermy2bdb 20my3bdb 14hmy4bdb 00010100bmy5wdw 20 dup(?)my6c = 100my7cequ 练习3.15 假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下面语句中的具体错误。 mov byte ptr bx,1000 mov bx,offset mywordsi cmp mybyte1,mybyte2 mov mybyte1,al+1 sub

22、 al,myword jnz myword answer(1)1000是一个字节以上能表示的最大整数(2)@​​>SI应该是偶数(3)两个内存单元不能直接操作(<@4)al+1不能用,应该改成al+1(5)源操作数与目的操作数类型不匹配(< @6) 使用标签而不是变量 练习3.16 编写一个程序,以大写形式显示从键盘输入的小写字母。答案 mov ah,1;只允许小写字母 int 21hsub al,20h;转换为大写字母mov dl, almov ah, 2int 21h; 显示第4章微机总线练习4.1 微机总线的信号线包括_、_、_,以及电源线和地线。分为三层(类),分别是_、_和

23、_。应答数据总线、地址总线、控制总线芯片总线、内部总线、外部总线练习4.2 占用总线进行数据传输,一般需要经过总线请求和仲裁四个阶段,_、_和end。求解寻址、数据传输练习4.7 执行一条指令所需的时间称为_周期,总线周期指的是_,8088的基本总线周期由_T组成。如果8088的CLK管脚接上到 5MHz 时钟信号,则每个 T 状态的持续时间为_。回答CPU与外界(内存和I/O口)通过总线操作(时间)进行数据交换的过程(时间) 4200ns 练习4.8 请解释一下8088的以下引脚信号: CLK, A19/S6A16/S3、A15A8、AD7AD0、ALE的含义,并在内存写总线周期画出它们的波形。

24、应答CLK:CPU时钟信号A19/S6A16/S3:地址信号A19A16和状态信号S6S3时分复用信号A15A8:地址信号A15A8AD7AD0:地址信号A7A0和数据信号D7D0时分复用信号 IO/M*:I/O 接口与内存操作的区别 信号 RD*:读控制信号,WR*:写控制信号 ALE:地址锁存信号练习4.9 8088 工作过程中会发生什么有台湾吗?究竟是什么时候?回答n 8088读写内存或I/O接口时,如果内存或I/O接口不能满足CPU的读写时序(来不及提供或读取数据时),CPU需要插入等待状态 Tw。 n 在读写总线周期的 T3 和 T4 之间插入 Tw。练习4.11 在8088系统中,阅读指令“A

25、DD 2000H, AX”(指令长度为3字节),执行指令需要多少个总线周期?它们是什么样的巴士循环? Answer n8088只有它可以读写一个字节的数据。因此,长度为3字节的读命令“ADD 2000H,AX”需要3个时钟周期,执行需要2个时钟周期。第n条读命令为内存读总线周期,执行为内存写总线周期。第5章主存练习5.3 与处理器总线类似,内存芯片也分为数据、地址和控制三种引脚。以存储结构为32K8的SRAM 62256为例,芯片应该有_数据管脚、_地址管脚,3个典型的控制管脚分别是_、_和_。 Answer 815 片选输出允许写入允许练习5.7 EEPROM 用闪存擦写

擦除有什么区别

26、?以AT28C040或AT29C512为例,对常用的两种判断擦写是否完成的方法进行说明,并估计两者完成整个芯片编程的最快时间。回答 AT28C040最快编程时间:(5121024/256)10ms20480ms20sAT29C512最快编程时间:512个扇区(10ms128字节(15010-39010-6)ms) 14950.4ms15s练习5. 8SRAM芯片的片选管脚是干什么用的?假设在8088微处理器系统中,当地址信号A19A15输出01011时,译码电路产生一个有效的片选信号,那么片选信号会占用多少个主芯片?内存容量?它的地址范围是多少?回答主存容量:21532KB,因为低位地址信号的数量是15个。地址

27、 范围:01011 000000000000000 01011 11111111111111,即58000H5FFFFH。练习5.11 什么是内存芯片连接中的“位扩展”和“字扩展”?使用DRAM 21256(256K1)组成512KB RAM存储模块,需要多少芯片,如何进行位扩展和字扩展?回答位扩展:当内存芯片的数据管脚数较少时比主机数据信号的个数,使用多个内存芯片向数据“位”方向扩展字扩展:当一个内存芯片不能满足系统存储容量时,使用多个内存芯片向“数据字”方向扩展. 组成一个512KB的内存模块,使用DRAM 21256(256K1)需要16个芯片;8位扩展,2个字扩展。练习5.13给出图5

28、-28 四个内存芯片各自占用的地址范围。如果使用部分解码,则会指示重复的地址范围。 Answer the available address range of each of the four memory chips: chip number A19A18A17A16A15A0 address range 12340001111101 all 0s all 1s all 0s all 0s all 1s all 0s all 100000H3FFFFH40000H7FFFFHC0000HCFFFFH, duplicate address: E0000HEFFFFHD0000HDFFFFH, duplicate address: F0000HFFFFFH Chapter 6 5)0@> 1 典型I/O接口电路中的三种可编程寄存器是什么?各自的作用是什么?答(1)数据寄存器:保存外设发给CPU的数据,CPU给外设(2)状态寄存器:保存外设或接口电路的状态(3)@>控制

29、寄存器:将 CPU 命令保存到外围设备或接口电路。练习5)0@>2I/O端口和内存地址通常有_和_两种排列方式,8088/8086处理器支持后者,设计有专门的I/O指令。其中,IN指令是将数据从_传送到_,8088/8086处理器引脚在执行该指令时会产生_总线周期。指令“OUT DX, AL”的目的操作数是_addressing模式,源操作数是_addressing模式。解决方案(I/O 端口和内存地址)统一寻址(I/O 端口和内存地址)独立寻址外设处理器 I/O 读取(I/O 端口的 DX)寄存器间接寄存器练习5)0@> 5 有一个查询输入接口电路与图 6-9 类似,但其数据端口为 8F40H,状态端口为 8F42H。从状态端口的最低位可以知道输入设备是否准备好接收一个字节的数据:D

30、01 表示准备好,D00 表示未准备好。无论查询超时如何,程序都会从​​输入设备中读取 100 个字节并将其保存到 IBUF 缓冲区中。回答 mov bx,offset inbufmov cx,100again:mov dx,8f42hstatus:in al,dx;查询一次 test al,01hjz statusmov dx,08f40hin al,dx; input a byte mov bx,alinc bxloop again;loop, input 100 Byte 练习5)0@>10 查询、中断和DMA传输是微机中常用的外围数据交换方式。请说明它们的特点。答案第7章中断控制接口练习5)9@>28088中断向量表的作用是什么?解题5)9@>IRR, I in 48259A

31、三个寄存器MR和ISR的作用是什么?应答中断请求寄存器IRR:保存8个外部中断请求信号IR0IR7的请求状态,Di位为1表示IRi引脚有中断请求; 0 表示没有请求。中断服务寄存器ISR:保存8259A正在服务的中断状态,Di位为1表示正在服务IRi中断; 0 表示不提供服务。中断屏蔽寄存器IMR:保存中断请求信号IR的屏蔽状态16/32位微机原理汇编语言及接口技术,Di位为1,表示IRi中断被屏蔽(禁止);为 0,表示允许。练习5)9@>8259A 5PC/XT ROM-BIOS 初始化程序如下:mov al, 13hout 20h, almov al, 08hout 21h, almov al, 09hout 21h, al 请说明设置的工作原理

32、。回答练习5)9@>6 某时刻8259A的IRR内容为08H,表示_。某时刻8259A的ISR内容为08H,表示_。在两个8259A级联中断电路中,输入主片的第5级IR5作为从片的中断请求输入,那么当主片和从片初始化时,ICW3的控制字分别为_和_。 Answer IR3 引脚有中断请求 IR3 正在被中断服务,其他不处理 20H 和 05H。练习 5)9@>11 下一个程序读取 8259A 的哪个寄存器? mov al, 0bhout 20h, alnopin al, 20h 解决方法 读取中断服务寄存器 ISR 的内容。因为在执行输入指令(A02)1@>之前16/32位微机原理汇编语言及接口技术,先执行输出指令,写入OCW3(D4D301),其中P RR RIS(D2D1D2)1@>011表示ISR后续阅读)

33、。不是查询词。第8章定时计数控制接口练习8.28253 每个计数通道和外围接口的信号线是什么,每个信号的用途是什么?答:在对CLK时钟输入信号进行计数的过程中,每向该引脚输入一个时钟信号(下降沿),计数器的计数值就减1。GATE门控输入信号控制着计数器,可分为电平控制和上升沿控制两种。 OUT 计数器输出信号 当一个计数过程结束时(计数值减小到2)1@>,OUT 管脚上会产生一个输出信号。练习8.38253 每个通道有_ 种工作模式可供选择从.如果设置一个通道为模式0后,其输出引脚为_level;当通道在_之后开始计数时,_signal端每有一个脉冲到来,_signal端减1;当为_时,输出引脚输出_level,表示计数结束,8253的CLK0接1.5MHz的时钟,做OUT0

34、要产生一个频率为300KHz的方波信号,8253的计数值应该是_,工作模式应该是_。 Answer 6 Low write count initial value (and enter the decrement 1 counter) CLK decrement 1 counter counter 递减到0 high 5 (1.5MHz300KHz) 3 练习8.4 试着按照下面的写8253的初始化以下要求在程序中,已知8253的计数器02和控制字的I/O地址依次为204H207H。使计数器1工作在模式0,只使用8位二进制计数,计数初值为128。使计数器0工作在模式1,按BCD码计数,计数值为3000。使计数器2工作在模式2,计数值为02F0H。回答 (1)mov al,50hmov dx,207hout dx,almov al,128;80hmov dx,205hout

35、dx,al(2)mov al,33hmov dx,207hout dx,almov ax,3000h; 不是 3000mov dx,204hout dx,almov al,ahout dx,al(3) @>mov al,0b4hmov dx,207hout dx,almov al,02f0hmov dx,206hout dx,almov al,ahout dx,al 第10章并行接口练习10.4 设置8255A的端口A为模式1输入,端口模式1下B是输出,读取C口数据是什么意思?回答练习10.5 将B0H写入8255A的控制寄存器,那么C口的PC5脚有什么作用?信号线?解n模式控制字为B0H101

36、10000B,表示A组输入为模式1,它会请求PC5引脚作为输入缓冲器满信号IBFA练习10.7 1st0.2.Section 3 使用 8255A 端口 A 模式 1 与打印机接口。如果使用端口 B,则其他内容保持不变。请说明如何修改接口电路和程序。回答 mov dx, 0fffehmov al, 84hout dx, almov al, 04h; make INTEB(PC2) 0, disable interrupt out dx, almov cx, counter; 打印字节数并发送 CXmov bx, offset buffer; 取字符字符串 call 的首地址 prints; 调用打印子程序 printsprocpush ax; 保护寄存器 push dxprint1:mov al,bx; 取数据 mov

37、dx,0fffahout dx,al;从端口 B 输出 mov dx,0fffchprint2:in al,dxtest al,02h;检查 (PC1) is 1 no?jz print2inc bxloop print1pop dxpop axretprintsendp 练习10.8 搭建一个有四个控制点的工控系统,分别由四个对应的输入端子控制,现在用8255A的C口来控制系统,如图10-22所示。当 K0K3 导通时,对应的发光二极管 L0L3 亮,表示系统的控制点运行正常;当开关闭合时,对应的发光二极管不亮,表示控制点在出错了。写8255A的初始化程序和这个控制程序。回答;写模式字mov al,100001b;81hm

38、ov dx,控制端口地址; 0fffehout dx, 人;最好加上下一段,使L0L3全亮mov al,0fhmov dx,端口C地址; 0fffchout dx, 人;控制程序段mov dx,端口C地址; 0fffchin al, dx;读入 PC0PC3mov cl, 4shl al, cl; dx, al 左移 4 位; 8个8段共阴极LED数码管电路。现在需要按下某个开关,它所代表的数字(K1是1,K2是2,K8是8)在数码管上从左到右循环显示(已经有一个delay 可以调用的子程序延迟),直到按下另一个开关。假设 8255A 数据端口 A、B、C 和控制

地址

39、 端口依次为 FFF8HFFFBH。完成上述功能的程序应包括8255A的初始化、控制程序和数码管的显示码表。答案显示代码表tabledb 0c0h; corresponding to 0 (arbitrary) db 0f9h, 0a4h, 0b0h, 99hdb 92h, 82h, 0f8h, 80h; corresponding to 188255A initialization mov dx, 0fffbhmov al, 10001001b; 89hout dx, al; control program again0: mov dx ,0fffah; input switch status in al, dxmov cx, 8; determine which switch is closed mov ah, 01h; mov ah, 08hagain1: shr al, 1; shl al, 1jnc disp0inc ah; dec ahloop again1jmp disp1 display field disp0:mov bx ,offset tablemov al,ahxlatmov dx,0fff8hout dx,al; output segment code disp1:mov cx,8; loop display 8-bit mov al,01hmov dx,0fff9hdisp2:out dx,al; output bit code call delayshl al,1loop disp2jmp again026

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论