微型计算机原理与应用.doc_第1页
微型计算机原理与应用.doc_第2页
微型计算机原理与应用.doc_第3页
微型计算机原理与应用.doc_第4页
微型计算机原理与应用.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

一、设8254的计数器0选择方式1,计数初值为0123H;计数器1选择方式3,计数初值为278AH;计数器2选择方式4,计数初值为0F00H。若8254端口地址为9497H。(1)三个计数器和控制寄存器的端口地址分别是多少?(2)写出8254的初始化程序。解:(1)计数器0的端口地址为94H,计数器1的端口地址为95H, 计数器2的端口地址为96H,控制寄存器的端口地址为97H。(2)初始化程序如下: MOV AL, 00110010B OUT 97H, AL ;设置计数器0的工作方式 MOV AL, 23H OUT 94H, AL MOV AL, 01H OUT 94H , AL ;送计数器0的计数初值MOV AL, 01110110B OUT 97H, AL ;设置计数器1的工作方式MOV AL, 8AH OUT 95H, AL MOV AL, 27H OUT 95H , AL ;送计数器1的计数初值 MOV AL, 10111000B OUT 97H, AL ;设置计数器2的工作方式 MOV AL, 00H OUT 96H, AL MOV AL,0FH OUT 96H , AL ;送计数器2的计数初值 二、设8255A的控制字寄存器地址为73H,PA口方式0输出,PB口方式1输入,PC口高4位输入。(1)PA口、PB口和PC口的端口地址分别是多少?(2)写出8255的初始化程序。解:(1)PA口的端口地址为70H, (2)初始化程序如下:PB口的端口地址为71H, MOV AL, 10001110BPC口的端口地址为72H。 OUT 73H, AL三、 设计一个程序,要求完成以下功能:1。循环接收用户从键盘输入的字符,直到用户按空格键后退出;2。如果用户输入的是小写字母,则将其转换为大写字母再显示在屏幕上;如果用户输入的不是小写字母,则在屏幕上原样显示出来。解: CODE SEGMENT ASSUME CS:CODE BEGIN: MOV AH, 07H INT 21H CMP AL, 20H JE EXIT CMP AL, a JB JIXU CMP AL, z JA JIXU SUB AL, 20HJIXU: MOV DL, AL MOV AH, 02H INT 21HJMP BEGIN EXIT: MOV AH, 4CH INT 21H CODE ENDS END BEGIN四、设计一个程序,要求完成以下功能:1。接收用户从键盘输入的一个字符但不回显。2。根据用户的输入显示相应的提示信息:如果用户输入的是“1“,则在屏幕上显示“A“;如果用户输入的是“2“,则在屏幕上显示“B“;如果用户输入的是其它字符,则在屏幕上“C”。3。显示提示信息后用户按任意键退出。解: CODE SEGMENT ASSUME CS:CODE BEGIN: MOV AH, 07H INT 21H CMP AL, 1 JNE NEXT1 MOV DL, A JMP SHOW NEXT1: CMP AL, 2 JNE NEXT2 MOV DL, B JMP SHOW NEXT2: MOV DL, C SHOW: MOV AH, 02H INT 21H MOV AH, 01H INT 21H MOV AH, 4CH INT 21H CODE ENDS END BEGIN五、判断指令正误,对正确指令写出寻址方式,对错误指令指出原因。1 MOV DI,AX 解: 1对,寄存器寻址。2 MOV AL,DX 2错,寄存器间接寻址不能采用DX寄存器。3 PUSH BH 3错,PUSH指令的操作数不能为字节。4MOV AX,BXSI 4对,基址变址寻址。5MUL AX,BX 5错,指令格式有误,MUL指令只能带一个操作数。 六、判断下列指令书写是否正确。如果不正确,请说明原因。(1) MOV AL, BX 解:(1)不正确。BX和AL长度不相等。(2) MOV AL, CL (2)正确。(3) INC BX (3)不正确。未明确指出操作数的长度。(4) MOV DX, 2000H (4)正确。(5) POP AH (5)不正确。POP指令的操作数不能为字节。步进电机控制接口实验步进电机控制程序 DATA SEGMENT PSTA DB 05H,15H,14H,54H,50H,51H,41H,45H ;相序表 message DB Press sw1 to start ! ;系统提示 DB 0DH,0AH DB If you want to QUIT,press sw2! DB 0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,09H ;显示提示信息 MOV DX,OFFSET message INT 21H MOV DX,303H ;初始化8255A MOV AL,81H OUT DX,AL MOV AL,09H ;置PC4=1关闭74LS373 OUT DX,AL L: MOV DX,302H ;查SW1按下?(PC0=0 ) IN AL,DX AND AL,01H ;未按下,等待 JNZ L MOV DX,303H ;置PC4=0,打开74LS37 MOV AL,08H OUT DX,ALRELOAD: MOV SI,OFFSET PSTA ;设相序表指针 MOV CX,8 ;设8拍循环次数LOP: MOV DX,302H ;查SW2按下?(PC1=0 ?) IN AL,DX AND AL,02H JZ QUIT ;已按下,退出 MOV AL,SI ;未按下,送相序代码到PA口 MOV DX,300H OUT DX,AL MOV DI,0AFHDELAY1: MOV BX,0FFFFH ;延时DELAY: DEC BX JNZ DELAY DEC DI JNZ DELAY1 INC SI ;相序表指针+1 DEC CX ;循环次数-1 JNZ LOP ;未到8次,继续 JMP RELOAD ;已到8次,重新赋值QUIT: MOV DX,303H ;置PC4=1,关闭74LS373 MOV AL,09 OUT DX,AL MOV AH,4CH ;程序退出 INT 21HCODE ENDS END START 步进电机起/停控制程序 运行步骤: 1.按下开关SW1,起动 2.按下任意键,退出 code segment assume cs:code,ds:code org 100hstart:jmp beginpstb db 05h,15h,14h,54h,50h,51h,41h,45h ;反向加电数据表delaytime dw (?) ;延时变量参数message db press SW1 to start!,0ah,0dh ;系统提示信息 db if you want to quit,please hit any key! db 0ah,0dh,$ begin:mov ax,cs mov ds,ax ;取程序数据段地址 mov ah,09h ;显示系统提示信息 mov dx,seg message mov ds,dx mov dx,offset message int 21h ;初始化8255 mov dx,303h;取8255的控制端口的地址 mov al,81h;初始化8255的A口,B口和C口高四位为输出模式 out dx,al ;C口低四位为输入模式 ;打开74ls373 mov al,08h out dx,al ;置pc4=0,打开数据缓冲器74LS373 wait1: ;判断开关SW2的状态 mov dx,302h ;取8255的端口c的地址 in al,dx ;读端口c的值 ;当按下开关sw2时,pc0口为低电平 and al,01h ;检测pc0口状态 jnz wait1 l0: mov si,offset pstb;取反向加电数据表地址 mov cx,08h;设置数据表循环参数loop: ;检测任意键 mov ah, 0bh int 21h;调用DOS 21H 功能0BH 进行键盘判断 cmp al, 00h jne over ;检测到任意键退出 ;延时 mov delaytime,0ffffh;设置延时变量参数值,采用的是软件;延时方式,此值根据主机的频率而设定 mov ah,03h;设置循环延时参数l1: mov bx,delaytime;进行软件延时,可根据主机频率l2: dec bx;调整延时变量参数值和循环延时参数 jnz l2 dec ah jnz l1 ;送加电数据 mov al,si ;取当前加电数据 mov dx,300h;取8255的端口A的地址 out dx,al;输出加电数据到端口A inc si;改变加电数据地址 dec cx;修改数据表循环参数 jnz loop;判断数据表循环是否结束 jmp l0 ;进行新的一轮循环 over: ;关闭74ls373 mov dx,303h;取8255的控制端口的地址 mov al,81h out dx,al mov al,09h out dx,al ;置pc4=1,关闭数据缓冲器74LS373 ;返回DOS mov ah, 4ch;DOS功能调用 int 21h ;返回DOS code ends end start 步进电机起/停控制程序 运行步骤: 1.按下开关a,起动 2.按下b键,退出 code segment assume cs:code,ds:code org 100hstart:jmp beginpstb db 05h,15h,14h,54h,50h,51h,41h,45h ;反向加电数据表delaytime dw (?) ;延时变量参数message db press a to start!,0ah,0dh ;系统提示信息 db if you want to quit,please hit b! db 0ah,0dh,$ begin:mov ax,cs mov ds,ax ;取程序数据段地址 mov ah,09h ;显示系统提示信息 mov dx,seg message mov ds,dx mov dx,offset message int 21h ;初始化8255 mov dx,303h;取8255的控制端口的地址 mov al,81h;初始化8255的A口,B口和C口高四位为输出模式 out dx,al ;C口低四位为输入模式 ;打开74ls373 mov al,08h out dx,al ;置pc4=0,打开数据缓冲器74LS373 wait1: ;判断开关a的状态 mov ah,07h int 21h ;否则看按下的是什么键 cmp al,a ;检测pc0口状态aa jne wait1 l0: mov si,offset pstb;取反向加电数据表地址 mov cx,08h;设置数据表循环参数aloop1: ;检测任意键 mov ah, 0bh int 21h;调用DOS 21H 功能0BH 进行键盘判断 cmp al, 0ffh jne jixu ;没有按下键盘,继续执行 mov ah,07h int 21h ;否则看按下的是什么键 cmp al,b je over ;按下的是b,退出 ;延时jixu: mov delaytime,0ffffh;设置延时变量参数值,采用的是软件;延时方式,此值根据主机的频率而设定 mov ah,03h;设置循环延时参数l1: mov bx,delaytime;进行软件延时,可根据主机频率l2: dec bx;调整延时变量参数值和循环延时参数 jnz l2 dec ah jnz l1 ;送加电数据 mov al,si ;取当前加电数据 mov dx,300h;取8255的端口A的地址 out d

温馨提示

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

评论

0/150

提交评论