下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安交通大学实验报告课 程_微机与接口技术成绩第页共页系别_ 生物医学工程 _ _实验日期 :年月日专业班级 _组别 _ _交报告日期 :年月日姓名_学号_报告退发(订正、重做)同 组 人_教师审批签字实验一汇编语言程序设计一、实验目的1、掌握 Lab6000p实验教学系统基本操作;2、掌握 8088/8086汇编语言的基本语法结构;3、熟悉 8088/8086汇编语言程序设计基本方法二、实验设备装有 emu8086软件的 PC 机三、实验内容1 、有一个10 字节的数组,其值分别是80H ,03H , 5AH , FFH , 97H ,64H , BBH , 7FH ,0FH , D8H 。
2、编程并显示结果:如果数组是无符号数,求出最大值,并显示;如果数组是有符号数,求出最大值,并显示。2、将二进制数 500H转换成二十进制( BCD )码,并显示“500H 的 BCD 是:”3、将二十进制码(BCD )7693转换成 ASCII 码,并显示“BCD 码 7693的 ASCII 是:”4、两个长度均为 100的内存块, 先将内存块1 全部写上 88H,再将内存块1 的内容移至内存块 2 。在移动的过程中,显示移动次数1,2 ,3 0AH 64H (16 进制 ASCII 码并显示子第 1 页程序)5 、键盘输入一个小写字母(az) ,转换成大写字母显示:请输入一个小写字母(az)
3、:转换后的大写字母是:6 、实现 4 字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH四、实验代码及结果1.1 、实验代码:DATASEGMENTSZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组SHOW DB 'THE MAX IS: ','$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;把数据的基地址赋给DSMOVDS,AXMOVDX,OFFSET SHOW;调用 DOS 显示字符
4、串MOVAH,09HINT21HMOVSI ,OFFSETSZ;数组的偏移地址赋给SIMOVCX,10;存进数组的长度给CXMOVDH,80H;将数组的第一个数写进 DHNEXT:MOVBL,SI;将数组的第一个数写进BLCMPDH,BL;比较 DH 和 BL 中数的到校JAENEXT1;如果 DH 中的数大于 BL 中,将跳转到 NEXT1MOVDH,BL ; 如果 DH 中的数小于 BL 中,将 BL 中的数赋给 DHNEXT1:INCSI;偏移地址加 1LOOPNEXT; 循环, CX 自减一直到 0 , DH 中存数组的最大值;接下来的程序是将将最大值DH 在屏幕上显示输出MOVBX,
5、02HNEXT2:MOVCL,4ROLDH,CL;将 DH 循环右移四位第2页MOVAL,DHANDAL,0FH;将 AL 高位清零,一位一位进行ASCII 码转换CMPAL,09H;与 09H 比较大小JBENEXT3;若小于,跳转至NEXT3 ,证明数值在0-9 之间ADDAL,07H;若大于,则证明为字母,因为字母与数字的ASCII 码相差 7,所以要加上 7NEXT3:ADDAL,30H;因为转换为 ASCII 码要加 30HMOVDL,ALMOVAH,2;DOS 中断显示INT21HDECBXJNZNEXT2MOVDL,'H'MOVAH,2INT21HCODE END
6、SENDSTART实验结果:第3页1.2 、实验代码DATASEGMENTSZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组SHOWDB 'THE MAX IS: ','$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;把数据的基地址赋给DSMOVDS,AXMOVDX,OFFSET SHOW;调用 DOS 显示字符串MOVAH,09HINT21HMOVSI ,OFFSETSZ;数组的偏移地址赋给SIMOVCX,10;存进数组的长度给CXMO
7、VDH,80H;将数组的第一个数写进DHNEXT:MOVBL,SI;将数组的第一个数写进BLCMPDH,BL;比较 DH 和 BL 中数的到校JGENEXT1;如果 DH 中的数大于 BL 中,将跳转到 NEXT1;此为无符号数与有符号数的唯一差别,JGE 是无符号数的跳转MOVDH,BL;如果 DH 中的数小于 BL 中,将 BL 中的数赋给 DHNEXT1:INCSI;偏移地址加 1LOOPNEXT ; 循环, CX 减 1,一直到 CX 减为 0 , DH 中存数组的最大值;接下来的程序是将最大值DH 在屏幕上显示输出MOVBX,02HNEXT2:MOVCL,4ROLDH,CL;将 DH
8、 循环右移四位MOVAL,DHANDAL,0FH;将 AL 高位清零,一位一位进行ASCII 码转换CMPAL,09H;与 09H比较大小JBENEXT3;若小于,跳转至 NEXT3 ,证明数值在 0-9 之间ADDAL,07H; 若大于, 则证明为字母, 因为字母与数字的ASCII 码相差7,所以要加上 7NEXT3:ADDAL,30H;因为转换为 ASCII码要加 30HMOVDL,AL第4页MOVAH,2;DOS 中断显示INT21HDECBXJNZNEXT2MOVDL,'H'MOVAH,2INT21HCODEENDSENDSTART实验结果第5页2 、实验代码DATAS
9、EGMENTBNUM DW 0500HDNUM DB 4 DUP()MESDB 'THE BCD OF '500H' IS: ','$'DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSET MES;将字符串偏移量写入 DXMOVAH,09HINT21HMOVAX,BNUM;将 0500H存入AX中LEABX,DNUM; 取 DNUM 的偏移量MOVDL,0;计算 1000的个数COUNT1:SUBAX,03E8H;AX-1000JCNEXT1;不
10、够减,即若CF=1 ,有借位,转 NEXT1INCDL;DL+1JMPCOUNT1;跳转 AGAIN1NEXT1:ADDAX,03E8H;AX+1000MOVBX,DL;将 DL( 即千位数)存入 DNUM中INCBX;BX+1MOVDL,0;DL 清零;计算 100个数COUNT2:SUBAX,0064H;AX-100JCNEXT2INCDLJMPCOUNT2NEXT2:ADDAX,0064HMOVBX,DL;将 DL( 即百位数)存入DNUM 中INCBXMOVDL,0第6页;计算 10 个数COUNT3:SUBAX,000AH;AX-10JCNEXT3INCDLJMPCOUNT3NEXT
11、3:ADDAX,000AHMOVBX,DL;将 DL( 十位数 )存入 DNUM中INCBXMOVBX,AL;计算个位数MOVCX,4;接下来的程序是将数值转化为ASCII 并在屏幕上显示LEASI,DNUM;取 DNUM 的地址偏移量NEXT4:MOVAL,SI ; 将 DNUM中所存的各个数值转换为ASCII 码;;在屏幕上输出显示CMPAL,09HJBENEXT5ADDAL,07HNEXT5:ADDAL,30HMOVDL,ALMOVAH,2INT21HINCSIDECCXJNZNEXT4CODEENDSENDSTART实验结果第7页3 、实验代码DATASEGMENTOUPDB'
12、THE ASCII OF 7963 IS:','$'A1DB07H,09H,06H,03HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSET OUPMOVAH,09HINT21HMOVCL,4MOVSI,0NEXT:MOVAL,A1SI;将 A1 的第 SI 个数据传给 ALMOVBL,ALORAL,30H;加 30 转换为 ASCII 码值SHRAL,4ANDAL,0FH;将右移后的高位清零ADDAL,30H;因为 ASCII 码与值之间相差 30MOVDL,ALMO
13、VAH,2;输出对应的 ASCII 码INT21HMOVAL,BLANDAL,0FHADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVDL,' 'MOVAH,02HINT21HINCSILOOPNEXTEXIT:MOVAH,4CH第 1 页INT21HCODEENDSENDSTART实验结果第9页4 、实验代码DATASEGMENTYI DB 100 DUP(88H)ERDB 100 DUP(00H);定义数组MESDB 'THE NUMBER OF COUNTER IS: ','$'DATAENDSCODESEGMENTAS
14、SUMECS:CODE,DS:DATAMAINPROC FARSTART:MOV AX,DATAMOV DS,AXMOV CL,100;计数器初值MOV CH,00H;转移次数统计,初值LEA SI,YI;将内存块1 的偏移量给 SILEA DI,ER;将内存块2 的偏移量给 DINEXT:MOV AL,SIMOV DI,AL;将 YI 中的数据复制到 ER 中INC SIINC DIINC CHMOV DX,OFFSET MES;显示字符串MOV AH,9INT 21HCALL COUNT;调用子程序DEC CL;计数减 1JNZ NEXT; 计数不为零,跳转执行HLTMAINENDP;主程
15、序结束;下面是子程序,实现屏幕显示转移次数功能COUNTPROC NEAR;定义子程序属性PUSH CX;CX 进栈MOV DH,CHMOV BX,02HNEXT2:MOV CL,4ROL DH,CL;将 DH 循环右移四位MOV AL,DHAND AL,0FH;将 AL 高位清零CMP AL,09H;与 09H比较大小JBE NEXT3;若小于,跳转至 NEXT3第10页ADD AL,07HNEXT3:ADD AL,30H; 加 30HMOV DL,ALMOV AH,2;DOS 中断显示INT 21HDEC BXJNZ NEXT2MOV DL,'H'显示 HMOV AH,2I
16、NT 21HMOV DL,0AH;回车MOV AH,2INT 21HMOV DL,0DH;换行MOV AH,2INT 21HPOP CX;CX 出栈RETCOUNTENDP;子程序结束CODEENDSENDSTART实验结果第11页第12页5 、实验代码DATASEGMENTINPDB 'PLEASE INPUT (az): ','$'设置字符串OUPDB 'THE TRANSFORMATION(AZ) IS:','$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROC FARSTAR
17、T:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INP;显示字符串,提示输入MOV AH,9INT 21HMOV AH,1;DOS 中断调用,从键盘中读取一个字符INT 21HPUSH AX;AX 入栈PUSH DXMOV DL,0DH;中断调用,回车MOV AH,2INT 21HMOV DL,0AH;中断调用,换行MOV AH,2INT 21HMOV DX,OFFSET OUP;显示字符串,输出提示MOV AH,9INT 21HPOP DX;DX 出栈POP AX;AX 出栈SUB AL,32 ;AL 减去 32 ,使大写转化为小写;大小写之间的 ASCII码值相差
18、32MOV DL,AL;DOS 中断显示结果MOV AH,2INT 21HMAINENDPCODEENDSEND START实验结果:第13页第14页6 、实验代码DATASEGMENTYI DB 44H,33H,22H,99H,00HER DB 44H,33H,22H,99H,00H;装载数据 ,必须有后面00HSUM DB 5 DUP()OUPDB '99223344H + 99223344H= ','$'DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATAMAINPROC FARSTART:MOV AX,DATAMOV DS,
19、AXMOV DX,OFFSET OUP;显示字符串MOV AH,9INT 21HLEA BP,YI;在 BP 中装入 YI 的地址偏移量LEA SI,ER;在 SI 中装入 ER 的地址偏移量LEA DI,SUM;在 DI 中装入 SUM 的地址偏移量MOV CX,05;计数初值CLC;进位位清零NEXT:MOV AL,BP;将 YI 中的数据赋给 ALMOV AH,SI;将 ER 中的数据赋给 BLADC AL,AH;YI 和 ER 中的数据带进位的相加MOV DI,AL;将相加的结果保存在 SUM 中INC SIINC DIINC BPDEC CXJNZ NEXT;结果不为零,跳转到 NE
20、XT;上面的程序已经将相加的结果存在了SUM 中,下面的程序是将 SUM中的结果转化为 ASCII显示MOV CH,05;计数器初值NEXT1:MOV DH,DI-1;将所得结果最高位赋给DHMOV BX,02HNEXT2:MOV CL,4ROL DH,CL;将 DH 循环右移四位MOV AL,DHAND AL,0FH;将 AL 高位清零第15页CMP AL,09H;与 09H 比较大小JBE NEXT3;若小于,跳转至NEXT3ADD AL,07HNEXT3:ADD AL,30H; 加 30HMOV DL,ALMOV AH,2;DOS 中断显示INT 21HDEC BXJNZ NEXT2DE
21、C DIDEC CHJNZ NEXT1;循环显示SUM 中的值MOV DL,'H'显示 HMOV AH,2INT 21HMAINENDPCODEENDSEND START实验结果五、分析与总结通过实验熟练了8086 的指令系统和基本的程序设计格式,实验中出现的各种问题通过一步步的分析自行解决的过程,提高了对于各种语句、指令的运用熟练程度第16页实验二8255 可编程并行接口实验一、实验目的1 、 掌握 8255 芯片结构及工作方式;2 、 熟悉 8255 并行口扩展的编程。二、实验设备1 、 Lab6000p实验教学系统;2 、 IBM-PC机三、系统中 8255 模块Lab6
22、000p实验箱中的8255 模块连线如图所示:AD0 AD7 、A0 、 A1 、 RESET、 /WR 、 /RD 已分别连至系统总线DB0 DB7 、 AB0 、 AB1 、RESET、 /IOW 、 /IOR ; 8255_CS 、PA 口、 PB 口、 PC 口引出留给用户连接。四、实验内容和实验步骤1 、 8255基本输入输出方式开关控制LED 显示1) 实验要求开关拨上LED 亮,开关拨下LED 灭。2) 电路连接第17页8255_CS 连至地址译码/CS0 , PA 口连至 LED 电平显示模块,PB 口连至开关电路。3) 程序框图4)程序代码mode equ082h; 方式 0
23、,PA,PC 输出, PB 输入PortA equ8000h; Port APortB equ8001h; Port BPortC equ8002h; Port CCAddr equ8003h; 控制字地址codesegmentassume cs:code第18页Start:moval, modemovdx, CAddroutdx, al; 输出控制字loop1: movdx, PortBinal, dxmovdx, PortAoutdx, aljmploop1codeendsend start5) 实验步骤1 在 Lab6000p 实验箱上完成连接电路;2 开启计算机电源,开启 Lab600
24、0p 实验箱电源;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, 0C003H第19页2 若 PB 口连至 LED 电平显示模块, PA 口连至开关电路,程序该如何修改。答:只要更改 8255 的方
25、式控制字为: 10010011H;方式 0 PA 输入 PB、PC 输出2 、 8255选通输入方式开关控制 LED 显示1) 实验要求开关上的逻辑信号在选通信号有效时读入微处理器,并送到LED 显示。2) 提示选通信号由单脉冲产生。3) 程序代码MODEEQU 10101110BPORTA EQU 8000HPORTB EQU 8001HPORTC EQU 8002HCADDR EQU 8003HCODE SEGMENTASSUME CS:CODESTART: START PROC NEARMOV DX,CADDRMOV AL,MODEOUT DX,ALSCAN:MOV DX,PORTBIN
26、AL,DXMOV DX,PORTAOUT DX,ALJMP SCANSTART ENDPCODEENDSEND START第20页实验三 8253 可编程定时 / 计数器实验一、实验目的1 、 掌握 8253 芯片结构及工作方式;2 、 熟悉 8253 可编程定时 / 计数器的编程。二、实验设备1 、 Lab6000p实验教学系统;2 、 IBM-PC机三、系统中 8253 模块Lab6000p实验箱中的8253 模块连线如图所示:AD0 AD7 、A0 、 A1 、/WR 、/RD已分别连至系统总线DB0 DB7 、 AB0 、 AB1 、 /IOW 、/IOR ;三个通道的OUT 、 GA
27、TE、 CLK 以及 CS 引出留给用户连接。四、实验内容和实验步骤1 、 8253计数实验1) 实验要求5 个脉冲后LED0 亮。2) 电路连接第 1 页3) 程序代码CONTROL equ 08003hCOUNT0equ 08000hCOUNT1equ 08001hCOUNT2equ 08002hcodesegmentassume cs:codestartprocnearmoval, 30h; 通道 0,方式 0movdx, CONTROLoutdx, almoval, 4; 计数器初始值。movdx, COUNT0outdx, al; 低八位moval, 0outdx, al; 高八位j
28、mp$第22页startendpcodeendsend 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
29、 秒钟灭。2) 提示对标准脉冲信号计数,若一个计数器位数不够2 个计数器( 2 个通道)级连(串连) 。3) 程序代码CONTROL equ 08003hCOUNT0equ 08000hCOUNT1equ 08001hCOUNT2equ 08002hcodesegmentassume cs:codestartprocnear第23页moval, 35h; 通道 0,方式 0movdx, CONTROLoutdx, almoval, 5000h; 计数器初始值。movdx, COUNT0outdx, al; 低八位moval, 0outdx, al; 高八位moval, 77h; 通道 1,方式
30、 1movdx, CONTROLoutdx, almoval, 800h; 计数器初始值。movdx, COUNT0outdx, al; 低八位moval, 0outdx, al; 高八位jmp$startendpcodeendsend start第24页实验四8259 外部中断实验一、实验目的1 、 掌握 8259 芯片结构及工作方式;2 、 熟悉 8259 的初始化和操作编程。二、实验设备1 、 Lab6000p实验教学系统;2 、 IBM-PC机三、系统中 8259 模块Lab6000p实验箱中的8259 模块连线如图所示:AD0 AD7 、A0 、 /WR 、/RD已分别连至系统总线D
31、B0 DB7 、 AB0 、/IOW 、/IOR ;引出CS、 IR0 (即 INT0 )、 INTA 留给用户连接。四、实验内容和实验步骤1. 8259 综合实验1) 实验要求用 8259 和 8255 实现脉冲个数计数,脉冲个数以二进制形式在LED 上显示。2) 电路连接第 1 页3) 程序框图4) 程序代码modeequ82h第26页PA8255equ8000hCTL8255 equ8003hICW1equ00010011b;单片 8259,上升沿中断 , 要写 ICW4ICW2equ00100000b;中断号为 20HICW4equ00000001b;工作在 8086/88方式OCW1
32、equ11111110b;只响应 INT0中断CS8259A equ0D000h;8259 地址CS8259B equ0D001hdatasegmentCNTdb0dataendscodesegmentassume cs:code, ds: dataIEnter procnearpushaxpushdxmovdx, PA8255incCNTmoval, CNToutdx, al;输出计数值movdx, CS8259Amoval, 20h;中断服务程序结束指令outdx, alpopdxpopaxiretIEnter endpIInitprocmovdx, CS8259Amoval, ICW1o
33、utdx, almovdx, CS8259Bmoval, ICW2outdx, almoval, ICW4outdx, almoval, OCW1outdx, alret第27页IInitendpstartproc nearmovdx, CTL8255moval, modeoutdx, alclimovax, 0movds, axmovbx, 4*ICW2;中断号movax, codeshlax, 4;x 16addax, offset IEnter;中断入口地址(段地址为0 )movbx, axmovax, 0incbxincbxmovbx, ax;代码段地址为 0callIInitmovax, datamovds, axmovCNT, 0; 计数值初始为 0moval, CNTmovdx, PA8255outdx, alstiLP:;等待中断,并计数。nopjmpLPstartendpend start第28页实验五综合设计实验一、实验目的1 、 掌握结构化汇编语言程序设计;2 、 掌握 8253 、 8259 的初始化和操作编程;3 、 熟悉 LED 数码管的动态驱动。二
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色食品 羊肚菌工厂化生产技术规程
- 学校五一劳动节假前安全教育讲话稿
- 学校食堂食品安全操作规范知识
- 学校教师继续教育管理制度
- 学校财务人员安全生产与资金安全责任书
- 穴位贴敷操作规范
- 物业小区与消防部门联动制度
- 外研版高一英语必修二阅读预习 新学期预科精讲课件
- (模板)工作面设计前风险辨识报告
- 信息技术全科基础摸底测评检测卷含完整答案
- 滴定分析培训课件
- 顶管工作井设计标准图集
- DB11-T 213-2022 城镇绿地养护技术规范
- 某大型工程项目部临建施工方案(技术方案)
- 2024年餐厅服务员(技师、高级技师)职业鉴定理论考试题库(含答案)
- 2024年成都西岭文旅投资运营集团有限公司招聘笔试冲刺题(带答案解析)
- GD T 形状及位置公差分析(一)
- 套扣式支模架专项施工方案
- 女性不孕症研究白皮书
- 铁路岩溶路基注浆施工质量检测细则
- 美发店卫生的管理制度 篇2
评论
0/150
提交评论