ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:461.94KB ,
资源ID:9058363      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9058363.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理实验报告.docx

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

2、H,BBH,7FH,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、实现

3、4字节无符号数加法程序,并显示结果,如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

4、SI ,OFFSET 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

5、 ROL DH,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 S

6、TART实验结果: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

7、 DH,80H ;将数组的第一个数写进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循环

8、右移四位 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实验结果2、实验代码DATA

9、 SEGMENT 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 ;不够

10、减,即若CF=1,有借位,转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

11、JC NEXT3 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 J

12、NZ NEXT4 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码值 S

13、HR AL,4 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 DU

14、P(00H) ;定义数组 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

16、NEXT3: ADD 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 TRANSFO

17、RMATION(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 OU

18、P ;显示字符串,输出提示 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 + 9922334

19、4H= ,$ DATA 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

20、,AH ;YI和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 NEXT

21、3 ;若小于,跳转至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可编程并行接口实

22、验一、实验目的1、 掌握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口连至

23、LED电平显示模块,PB口连至开关电路。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

24、 jmp loop1code ends 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

25、 若PB口连至LED电平显示模块,PA口连至开关电路,程序该如何修改。答:只要更改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,CA

26、DDR MOV AL,MODE OUT DX,ALSCAN: MOV 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、/

27、IOR;三个通道的OUT、GATE、CLK以及CS引出留给用户连接。四、 实验内容和实验步骤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 ; 低八

28、位 mov al, 0 out dx, al ; 高八位 jmp $start endpcode ends end start4) 实验步骤1 在Lab6000p实验箱上完成连接电路;2 开启计算机电源,开启Lab6000p实验箱电源;3 启动WAVE6000软件;4 确认WAVE6000与Lab6000p连接;5 输入源代码;6 编译源代码(F9);7 连续运行程序(Ctrl+F9),按动单脉冲按键观察LED显示情况。5) 问题思考1 若CS连至地址译码/CS3,程序该如何修改。2 为什么定时/计数器初值赋4,5个脉冲后LED才亮。2、 8253定时实验1) 实验要求在LED上实现1秒钟亮/1秒钟灭。2) 提示对标准脉冲信号计数,若一个计数器位数不够2个计数器(2个通道)级连(串连)。3)程序代码CONTROL equ 08003hCOUNT0 equ 08000hCOUNT1 equ 08001hCOUNT2 equ 08002hcode segment assume cs:codestart proc near mov al

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1