收藏 分销(赏)

微机原理实验报告微机与接口技术.docx

上传人:快乐****生活 文档编号:4336649 上传时间:2024-09-07 格式:DOCX 页数:39 大小:572.90KB
下载 相关 举报
微机原理实验报告微机与接口技术.docx_第1页
第1页 / 共39页
微机原理实验报告微机与接口技术.docx_第2页
第2页 / 共39页
微机原理实验报告微机与接口技术.docx_第3页
第3页 / 共39页
微机原理实验报告微机与接口技术.docx_第4页
第4页 / 共39页
微机原理实验报告微机与接口技术.docx_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、西安交通大学实验报告 成绩 课 程_ 微机与接口技术 第 页 共 页 系 别_ 生物医学工程_ _ 实验日期: 年 月 日 专业班级_ _组别_ _ 交报告日期: 年 月 日 姓 名_ 学号_ _报 告 退 发 ( 订正 、 重做 ) 同 组 人_ 教师审批签字实验一 汇编语言程序设计一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法二、实验设备装有emu8086软件的PC机三、实验内容1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7F

2、H,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示;如果数组是有符号数,求出最大值,并显示。2、将二进制数500H转换成二十进制(BCD)码,并显示“500H的BCD是:”3、将二十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:”4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1, 2 ,30AH64H(16进制ASCII码并显示子程序)5、键盘输入一个小写字母(az),转换成大写字母显示:请输入一个小写字母(az):转换后的大写字母是:6、实现4字节无符号数加

3、法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH四、实验代码及结果1.1、实验代码:DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB THE MAX IS: ,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFS

4、ET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DHNEXT: MOV BL,SI ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DHNEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,

5、CL ;将DH循环右移四位 MOV AL,DH AND AL,0FH ;将AL高位清零,一位一位进行ASCII码转换 CMP AL,09H ;与09H比较大小 JBE NEXT3 ;若小于,跳转至NEXT3,证明数值在0-9之间 ADD AL,07H ;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7NEXT3: ADD AL,30H ;因为转换为ASCII码要加30H MOV DL,AL MOV AH,2 ;DOS中断显示 INT 21H DEC BX JNZ NEXT2 MOV DL,H MOV AH,2 INT 21H CODE ENDS END START实验结果

6、:1.2、实验代码DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H ;存进数组 SHOW DB THE MAX IS: ,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H

7、;将数组的第一个数写进DHNEXT: MOV BL,SI ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JGE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 ;此为无符号数与有符号数的唯一差别,JGE是无符号数的跳转 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DHNEXT1: INC SI ;偏移地址加1 LOOP NEXT ;循环,CX减1,一直到CX减为0,DH中存数组的最大值 ;接下来的程序是将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位 MOV

8、 AL,DH AND AL,0FH ;将AL高位清零,一位一位进行ASCII码转换 CMP AL,09H ;与09H比较大小 JBE NEXT3 ;若小于,跳转至NEXT3,证明数值在0-9之间 ADD AL,07H;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7NEXT3: ADD AL,30H ;因为转换为ASCII码要加30H MOV DL,AL MOV AH,2 ;DOS中断显示 INT 21H DEC BX JNZ NEXT2 MOV DL,H MOV AH,2 INT 21H CODE ENDS END START实验结果2、实验代码DATA SEGMENT

9、 BNUM DW 0500H DNUM DB 4 DUP() MES DB THE BCD OF 500H IS: ,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES ;将字符串偏移量写入DX MOV AH,09H INT 21H MOV AX,BNUM ;将0500H存入AX中 LEA BX,DNUM ;取DNUM的偏移量 MOV DL,0 ;计算1000的个数COUNT1: SUB AX,03E8H ;AX-1000 JC NEXT1 ;不够减,即若CF=1

10、,有借位,转NEXT1 INC DL ;DL+1 JMP COUNT1 ;跳转AGAIN1NEXT1: ADD AX,03E8H ;AX+1000 MOV BX,DL ;将DL(即千位数)存入DNUM中 INC BX ;BX+1 MOV DL,0 ;DL清零;计算100个数COUNT2: SUB AX,0064H ;AX-100 JC NEXT2 INC DL JMP COUNT2NEXT2: ADD AX,0064H MOV BX,DL ;将DL(即百位数)存入DNUM中 INC BX MOV DL,0 ;计算10个数 COUNT3: SUB AX,000AH ;AX-10 JC NEXT3

11、 INC DL JMP COUNT3NEXT3: ADD AX,000AH MOV BX,DL ;将DL(十位数)存入DNUM中 INC BX MOV BX,AL ;计算个位数 MOV CX,4; 接下来的程序是将数值转化为ASCII并在屏幕上显示 LEA SI,DNUM ;取DNUM的地址偏移量NEXT4: MOV AL,SI ;将DNUM中所存的各个数值转换为ASCII码;;在屏幕上输出显示 CMP AL,09H JBE NEXT5 ADD AL,07H NEXT5: ADD AL,30H MOV DL,AL MOV AH,2 INT 21H INC SI DEC CX JNZ NEXT4

12、 CODE ENDS END START实验结果3、实验代码DATA SEGMENT OUP DB THE ASCII OF 7963 IS:,$ A1 DB 07H,09H,06H,03HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET OUP MOV AH,09H INT 21H MOV CL,4 MOV SI,0NEXT: MOV AL,A1SI ;将A1的第SI个数据传给AL MOV BL,AL OR AL,30H ;加30转换为ASCII码值 SHR AL,4

13、AND AL,0FH ;将右移后的高位清零 ADD AL,30H ;因为ASCII码与值之间相差30 MOV DL,AL MOV AH,2 ;输出对应的ASCII码 INT 21H MOV AL,BL AND AL,0FH ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV DL, MOV AH,02H INT 21H INC SI LOOP NEXTEXIT: MOV AH,4CH INT 21HCODE ENDS END START实验结果4、实验代码DATA SEGMENT YI DB 100 DUP(88H) ER DB 100 DUP(00H) ;

14、定义数组 MES DB THE NUMBER OF COUNTER IS: ,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATA MOV DS,AX MOV CL,100 ;计数器初值 MOV CH,00H ;转移次数统计,初值 LEA SI,YI ;将内存块1的偏移量给SI LEA DI,ER ;将内存块2的偏移量给DINEXT: MOV AL,SI MOV DI,AL ;将YI中的数据复制到ER中 INC SI INC DI INC CH MOV DX,OFFSET MES ;显示字符串

15、MOV AH,9 INT 21H CALL COUNT ;调用子程序 DEC CL ;计数减1 JNZ NEXT ;计数不为零,跳转执行 HLT MAIN ENDP ;主程序结束;下面是子程序,实现屏幕显示转移次数功能COUNT PROC NEAR ;定义子程序属性 PUSH CX ;CX进栈 MOV DH,CH MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位 MOV AL,DH AND AL,0FH ;将AL高位清零 CMP AL,09H ;与09H比较大小 JBE NEXT3 ;若小于,跳转至NEXT3 ADD AL,07H NEXT3: A

16、DD AL,30H ;加30H MOV DL,AL MOV AH,2 ;DOS中断显示 INT 21H DEC BX JNZ NEXT2 MOV DL,H ;显示H MOV AH,2 INT 21H MOV DL,0AH ;回车 MOV AH,2 INT 21H MOV DL,0DH ;换行 MOV AH,2 INT 21H POP CX ;CX出栈 RETCOUNT ENDP;子程序结束CODE ENDS END START实验结果5、实验代码DATA SEGMENT INP DB PLEASE INPUT (az): ,$ ;设置字符串 OUP DB THE TRANSFORMATION(

17、AZ) IS:,$DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET INP ;显示字符串,提示输入 MOV AH,9 INT 21H MOV AH,1 ;DOS中断调用,从键盘中读取一个字符 INT 21H PUSH AX ;AX入栈 PUSH DX MOV DL,0DH ;中断调用,回车 MOV AH,2 INT 21H MOV DL,0AH ;中断调用,换行 MOV AH,2 INT 21H MOV DX,OFFSET OUP ;显示字符串

18、,输出提示 MOV AH,9 INT 21H POP DX ;DX出栈 POP AX ;AX出栈 SUB AL,32 ;AL减去32,使大写转化为小写;大小写之间的ASCII码值相差32 MOV DL,AL ;DOS中断显示结果 MOV AH,2 INT 21H MAIN ENDPCODE ENDS END START实验结果:6、实验代码DATA SEGMENT YI DB 44H,33H,22H,99H,00H ER DB 44H,33H,22H,99H,00H ;装载数据,必须有后面00H SUM DB 5 DUP() OUP DB 99223344H + 99223344H= ,$ D

19、ATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET OUP ;显示字符串 MOV AH,9 INT 21H LEA BP,YI ;在BP中装入YI的地址偏移量 LEA SI,ER ;在SI中装入ER的地址偏移量 LEA DI,SUM ;在DI中装入SUM的地址偏移量 MOV CX,05 ;计数初值 CLC ;进位位清零NEXT: MOV AL,BP ;将YI中的数据赋给AL MOV AH,SI ;将ER中的数据赋给BL ADC AL,AH ;YI和

20、ER中的数据带进位的相加 MOV DI,AL ;将相加的结果保存在SUM中 INC SI INC DI INC BP DEC CX JNZ NEXT ;结果不为零,跳转到NEXT;上面的程序已经将相加的结果存在了SUM中,下面的程序是将SUM中的结果转化为ASCII显示 MOV CH,05 ;计数器初值NEXT1: MOV DH,DI-1 ;将所得结果最高位赋给DH MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位 MOV AL,DH AND AL,0FH ;将AL高位清零 CMP AL,09H ;与09H比较大小 JBE NEXT3 ;若小于,跳

21、转至NEXT3 ADD AL,07H NEXT3: ADD AL,30H ;加30H MOV DL,AL MOV AH,2 ;DOS中断显示 INT 21H DEC BX JNZ NEXT2 DEC DI DEC CH JNZ NEXT1 ;循环显示SUM中的值 MOV DL,H ;显示H MOV AH,2 INT 21H MAIN ENDPCODE ENDS END START 实验结果五、分析与总结 通过实验熟练了8086的指令系统和基本的程序设计格式,实验中出现的各种问题通过一步步的分析自行解决的过程,提高了对于各种语句、指令的运用熟练程度实验二 8255可编程并行接口实验一、实验目的1

22、、掌握8255芯片结构及工作方式;2、熟悉8255并行口扩展的编程。二、实验设备1、Lab6000p实验教学系统;2、IBM-PC机三、系统中8255模块Lab6000p实验箱中的8255模块连线如图所示:AD0AD7、A0、A1、RESET、/WR、/RD已分别连至系统总线DB0DB7、AB0、AB1、RESET、/IOW、/IOR;8255_CS、PA口、PB口、PC口引出留给用户连接。四、实验内容和实验步骤1、8255基本输入输出方式开关控制LED显示1)实验要求开关拨上LED亮,开关拨下LED灭。2)电路连接8255_CS连至地址译码/CS0,PA口连至LED电平显示模块,PB口连至开

23、关电路。3)程序框图4)程序代码 mode equ 082h ; 方式0,PA,PC输出,PB输入 PortA equ 8000h ; Port A PortB equ 8001h ; Port B PortC equ 8002h ; Port C CAddr equ 8003h ; 控制字地址code segment assume cs:codeStart: mov al, mode mov dx, CAddr out dx, al ; 输出控制字loop1: mov dx, PortB in al, dx mov dx, PortA out dx, al jmp loop1code end

24、s end start5)实验步骤1在Lab6000p实验箱上完成连接电路;2开启计算机电源,开启Lab6000p实验箱电源;3启动WAVE6000软件;4确认WAVE6000与Lab6000p连接;5输入源代码;6编译源代码(F9);7单步运行源代码(F8),观察每条指令执行结果;8连续运行程序(Ctrl+F9),上下拨动开关观察LED显示情况。6)问题思考1若8255_CS连至地址译码/CS4,程序该如何修改。答:只要将8255四个端口A、B、C、控制口端口号依次更改为:0C000H, 0C001H, 0C002H, 0C003H2若PB口连至LED电平显示模块,PA口连至开关电路,程序该

25、如何修改。答:只要更改8255的方式控制字为:10010011H ;方式0 PA输入 PB、PC输出2、8255选通输入方式开关控制LED显示1)实验要求开关上的逻辑信号在选通信号有效时读入微处理器,并送到LED显示。2)提示选通信号由单脉冲产生。3) 程序代码MODE EQU 10101110BPORTA EQU 8000HPORTB EQU 8001HPORTC EQU 8002HCADDR EQU 8003HCODE SEGMENTASSUME CS:CODESTART: START PROC NEAR MOV DX,CADDR MOV AL,MODE OUT DX,ALSCAN: MO

26、V DX,PORTB IN AL,DX MOV DX,PORTA OUT DX,AL JMP SCAN START ENDP CODE ENDSEND START实验三8253可编程定时/计数器实验一、实验目的1、掌握8253芯片结构及工作方式;2、熟悉8253可编程定时/计数器的编程。二、实验设备1、Lab6000p实验教学系统;2、IBM-PC机三、系统中8253模块Lab6000p实验箱中的8253模块连线如图所示:AD0AD7、A0、A1、/WR、/RD已分别连至系统总线DB0DB7、AB0、AB1、/IOW、/IOR;三个通道的OUT、GATE、CLK以及CS引出留给用户连接。四、实

27、验内容和实验步骤1、8253计数实验1)实验要求5个脉冲后LED0亮。2)电路连接3)程序代码CONTROL equ 08003hCOUNT0 equ 08000hCOUNT1 equ 08001hCOUNT2 equ 08002hcode segment assume cs:codestart proc near mov al, 30h ; 通道0,方式0 mov dx, CONTROL out dx, al mov al, 4 ; 计数器初始值。 mov dx, COUNT0 out dx, al ; 低八位 mov al, 0 out dx, al ; 高八位 jmp $start endpcode ends end start4)实验步骤1在Lab6000p实验箱上完成连接电路;2开启计算机电源,开启Lab6000p

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服