微机原理与接口技术考试编程题_第1页
微机原理与接口技术考试编程题_第2页
微机原理与接口技术考试编程题_第3页
微机原理与接口技术考试编程题_第4页
微机原理与接口技术考试编程题_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 刘书收集整理某应用系统以8255a作为接口,采集一组开关s7s0 的状态,然后通过一组发光二极管led7led0显示开关状态,(si闭合,则对应ledi亮,si断开,则对应的ledi灭)电路连接如下图3所示, 1).写出8255四个端口的地址。 2).写出8255工作方式控制字。 3).写出实现给定功能的汇编语言程序。1)a口、b口、c口和控制口的地址分别是330h、331h、332h和333h。2)a口工作在方式0输入,b口工作在方式0输出,c口空闲,所以其控制字是10010000b90h3)程序如下:moval, 90h ;置方式字movdx, 333h ;置控制端口地址outdx, a

2、ll1:movdx, 331h ;置b口地址inal, dx ;读开关状态(1断,0通)notal ;状态取反movdx, 330h ;置a口地址outdx, al ;输出(1亮,0灭)jmpl1四、以下为8088系统中以8255a 为输入设备和输出设备的查询方式接口电路的部分硬件图。(18分) 1、试述8088cpu和输入设备进行数据传送的工作过程。(6分)输入设备要将数据传送给cpu时,先将数据输出给8255a的pa0-pa7, 然后通过ack端输出脉冲信号将数据锁存于锁存器,同时将触发器置1。 而cpu要不断查询设备的状态,执行读8255a c口操作,判断从c口读入数据的d1位是1还是0

3、,若为0表示设备未准备好,则等待后再查询;若为1表示设备已将数据送出, cpu 从 8255a的 a口读入数据,然后通过pc 6输出负脉冲将状态触发器清0。之后重复以上的操作,周而复始。2、以下是8088cpu将存于以block为首址的内存单元区域中100个数据依次传送给输出设备的程序段,请在划线处填入内容。 block db a1,a2,a100 count equ $-block start: lea si, block ;置数据单元首址指针 movcx ,count movdx, 383h ;8255a初始化设置 moval, 91h outdx,al movdx, 383h ;置pc7

4、为低电平 moval, 0eh outdx,alagain: movdx, 382h ;查询输出设备状态 inal,dx test al, 04h jnz again moval,si ;取数据传送给输出设备 incsi movdx, 381h outdx,al movdx, 383h ;置pc7产生高电平 moval, 0fh outdx,al nop nop moval, 0eh ;置pc7为低电平 outdx,al loopagain ret 8255a方式控制字 8255a c口复位/置位控制字 1 d6 d5 d4 d3 d2 d1 d0 0 0 0 0 d3 d2 d1 d0 a口

5、方式 00 方式0 a口 c口下半口 01 方式1 0 输出 0 输出 000 pc0 0复位1× 方式2 1 输入 1 输入 001 pc1 1 置位 b口 010 pc2 c口上半口 b口方式 0 输出 0 输出 0 方式0 1 输入 111 pc7 1 输入 1 方式1五、分析以下汇编语言源程序,根据要求在划线处填上适当内容: data segment at 2000h org 0100htable db 66,76,87,89, 96, 79, 64, 62, 57, 49, 85, 75, 60, 77, 58count equ $-table num1 db 0num2

6、db 0num3 db 0data endsstack segment para stack 'stack'top db 100 dup(?)stack endscode segment assume cs:code,ds:data, ss:stackmain : mov ax,data mov ds,ax mov si,offset tablemov cx,countlop1: mov al, sicmp al, 85ja highcmp al, 70jbe lowinc num2 jmp nexthigh: inc num1 jmp nextlow: inc num3nex

7、t: inc si loop lop1 mov ah, 4ch int 21hcode ends end main(1) 画出数据段中数据定义语句实现的内存分配图。(2) 执行程序后,结果为: offset table = 0100h ,segment num2 = 2000h ,al= 58 (3ah) , ds= 2000h , cx= 0 , (20106h)= 64 (40h) , (2010fh)= 03h , (20111h)= 07h , 在以block为首址的内存区域中,存放着一组无符号的字节数据,数据个数存于count单元中,试编制程序段从中找出最大数和最小数,并分别存放于m

8、ax和min单元中。程序段为: block db a1,a2, an count db n max db 0min db ffh lea si, block mov cx, countagain: mov al, si cmp al, max jbe next1 mov max, alnext1: cmp al, min jae next2 mov min, alnext2: inc siloop again hlt在数据段中从0500h单元开始存放着100个带符号数(16位),要求把其中的正数传送至1000h开始的存储区;负数传送至1100h开始的存储区,且分别统计正数和负数的个数,并将正数

9、和负数的个数分别存入1200h和1201h单元中。(要求:写出完整程序并画出流程图)data segmentorg 0500hn0 dw x1,x2,x100 ;自定义100个带符号数 count equ $buffer/2n1 dw 1000h ;保存正数 n2 dw 1100h ;保存负数 n3 equ 1200h ;保存个数 data endscode segmentassume cs:code,ds:datamain proc start: mov ax,datamov ds,axmov cx,countxor dx,dxlea si,n0 ;首地址silea bx,n1lea di,

10、n2again: mov ax,si and ax,axjs next1 ;负转 mov bx,axinc dhinc bxinc bxjmp next2next1: mov di,axinc diinc diinc dlnext2: loop again ;循环 mov n3,dx ;n3存正、负数个数 mov ah,4chint 21h ;返回dosmain endpcode ends end start 6 接口题:某8255的a口、b口连接八个led显示器(如图所示,共阴极),请设计一程序,使这八个led显示器dg0dg7分别循环显示07,每个led每次只显示一秒钟(有1秒钟延时子程序

11、“d1stime”可调用)。(15分) 8255a工作方式控制字如下 d7d6d5d4d3d2d1d0 特征位  a组方式  a口  c47 b组方式  b口  c03led数码管段码表(共阴)  p g f e d c b atab 00 0 1 1 1 1 1 110 0 0 0 0 1 1 020 1 0 1 1 1 0 130 1 0 0 1 1 1 140 1 1 0 0 1 1 050 1 1 0 1 1 0 160 1 1 1 1 1 0 170 0 0 0 0 1 1 180 1 1 1 1 1 1

12、 190 1 1 0 0 1 1 1 mov dx,30fhmov al,80hout dx,all1: mov cx,8lea si,tabmov bl,0fehl2: mov al,simov dx,30chout dx,almov al,blmov dx,30dhout dx,alcall d1stimeinc sirol blloop l2jmp l1hlt五、(15分)已知某8255a在系统中占用888bh号端口地址,现欲安排其pa,pb,pc口全部为输出,pa,pb口均工作于方式0模式,并将pc6置位,使pc3复位,试编写出相应的初始化程序。 五、mov  al

13、, 80h        out  8bh,al            mov  al,odh        out  8bh,al      mov  al,06hout  8bh,al四、(15分)用其他指令完成和下列指令一样的功能:(1) rep movsb (2

14、) rep lodsb (3) rep stosb (4) rep scasb (1) loop1:mov al,byte ptr si mov es:byte ptr di, al inc  si  或: dec si inc  di  或: dec di loop loop1(2) loop1: mov al, byte ptr si inc  si  或: dec si loop loop1(3) loop1: mov es:byte pt

15、r di, al inc  di  或: dec diloop loop1(4) loop1: cmp al,es:byte ptr di je  exit inc  di  或: dec diloop loop1exit:  五、(15分)根据下列要求编写一个汇编语言程序::代码段的段名为cod_sg数据段的段名为dat_sg堆栈段的段名为stk_sg变量high_dat所包含的数据为95将变量high_dat装入寄存器ah,bh和dl程序运行的入口地址为startdat_sg

16、60; segemnt  high_dat db  95dat_sg  ends;stk_sg  segment  dw 64 dup(?)stk_sg  ends;cod_sg  segmentmain  proc farassume cs: cod_sg, ds: dat_sg, ss: stk_sgstart: mov ax, dat-sg  mov ds, ax  mov ah, high_dat  mov bh, ahmov dl, ahmov ah, 4chint  21hmain  endpcod_sg ends  end  start 在1000h和1064h单元开始,放有各为100字节的组合后的bcd数(地址最低处放的是最低位字节),求它们的和,且把和放在1100h开始的单元中。(要求写出完整程序)data segmentorg 1000hstring1 db nn,nn, string2 db nn,nn, count equ $stri ng2resut db 101 dup ( )data endsstack segment stackdb 100 dup(?)sta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论