2022年汇编语言程序设计微机实验报告 .pdf
《2022年汇编语言程序设计微机实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年汇编语言程序设计微机实验报告 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机实验报告- 1 - 微机实验报告第一部分: 8086汇编语言程序设计一、实验目的通过上机练习,初步掌握 8086 的指令系统,熟悉 8086 汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用DEBUG 调试工具。二、实验题目(一)编程实现从字符串中查找特定的字符,记录特定字符的个数,并将结果在屏幕上显示,同时退出并返回DOS。 (要求字符串从键盘上输入)1、流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - -
2、- - 微机实验报告- 2 - 2、实验程序及注释DATA SEGMENT BUFSIZE DB 20 ;数据段ACTCHAR DB ? ;定义字符串CHARTEXT DB 20 DUP(?) ;给输入字符分配内存DB $ CNT DB 0 ;给计数器分配内存STRING1 DB PLEASE INPUT THE STRING:,$ STRING2 DB 0AH,0DH,INPUT THE WORD YOU WANT TO CHECK:,$ STRING3 DB 0AH,0DH,THE NUMBER OF THE WORD IS:,$ DATA ENDS ;数据段结束COSEG SEGMENT
3、 ;代码段ASSUME CS:COSEG,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRING1 ;显示提示语:请输入字符串MOV AH,09H ;输出字符串 STRING1 INT 21H MOV DX,OFFSET BUFSIZE ;从键盘输入字符串存入BUFSIZE MOV AH,0AH ;并送显INT 21H MOV DX,OFFSET STRING2 ;显示提示语:想查询的字符是MOV AH,09H ;输出字符串 STRING2 INT 21H MOV AH,01H ;从键盘上输入字符到AL 中并送显INT 21H MOV
4、 BX,OFFSET CHARTEXT ;将字符串首地址存入BX MOV CL,ACTCHAR ;置循环次数 CX=字符串长度XOR CH,CH LP1: CMP AL, BX ; 字符串从头开始与键入字符AL 比较JZ LP2 ;相等则转入 LP2 INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符, 继续循环 LP1 JMP FINI ;若全部比较完毕,跳转FINI LP2: INC CNT ;计数器增一INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,跳至LP1 FINI: MO
5、V DX,OFFSET STRING3 ;显示提示语:所查询的字符个数:MOV AH,09H INT 21H MOV AL,CNT ;将计数器的值送 AL AAM ;将此值转换成非压缩BCD 码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 19 页 - - - - - - - - - 微机实验报告- 3 - ADD AH,30H ;将 BCD 码转换为 ASC码MOV DL,AH ;高位送显MOV AH,02H INT 21H MOV AL,CNT ;再将计数器的值送A
6、L AAM ADD AL,30H ;将 BCD 码转换为 ASC码MOV DL,AL ;低位送显MOV AH,02H INT 21H MOV AH,4CH ;结束INT 21H COSEG ENDS ;代码段结束END START ;程序结束3、运行结果PLEASE INPUT THE STRING( 先输入字符串 ):ASDFAAD INPUT THE WORD YOU WANT TO CHECK( 输入待查找字符 ): ATHE NUMBER OF THE WORD IS( 数量为 ):3PLEASE INPUT THE STRING( 先输入字符串 ):ASDFAAD INPUT THE
7、 WORD YOU WANT TO CHECK( 输入待查找字符 ):9THE NUMBER OF THE WORD IS( 数量为 ):0PLEASE INPUT THE STRING( 先输入字符串 ):ASDFAAD INPUT THE WORD YOU WANT TO CHECK( 输入待查找字符 ): STHE NUMBER OF THE WORD IS( 数量为 ):14、程序改进1循环次数的改进原来的程序: MOV CX,19 改进原因:此程序表明无论输入的字符串多长,即使没有达到限定的最大字符串的长度,也要循环19 次。改进后的程序: MOV CL,ACTCHAR XOR CH
8、,CH 改进结果: ACTCHAR 即所输入的字符串的实际长度,因此,实际为置循环次数 CX=字符串长度,这样可以提高运行速度2删除多余语句原来的程序:LP1: CMP AL,BX ;将字符与字符串逐个比较JZ LP2 ;相等则转入 LP2 INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一CMP CX,0000H ;若还有未比较的字符名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - 微机实验报告- 4 - J
9、NZ LP1 ;继续循环 LP1 JMP FINI ;若全部比较完毕,跳转FINI LP2: INC CNT ;计数器增一INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一CMP CX,0000H ;若还有未比较的字符JNZ LP1 ;跳转 LP1 改进原因: DEC 为自减一,若减为 0,它会自动影响其标志位ZF,所以不用把CX 再与 00H 比较,判断 CX 是否为零。改进后的程序:(删除 CMP CX,0000H)LP1: CMP AL, BX ; 字符串从头开始与键入字符AL 比较JZ LP2 ;相等则转入 LP2 INC BX ;指针指向字符串下一个字符DEC CX
10、 ;循环次数减一JNZ LP1 ;若还有未比较的字符, 继续循环 LP1 JMP FINI ;若全部比较完毕,跳转FINI LP2: INC CNT ;计数器增一INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,跳至LP1 (二)编程实现把键盘输入的两位BCD 码,在屏幕上用16 进制数显示出来。1 流程图初始化键入字符判断是否在0 到 9 之间转化为十进制数除以 16 将整数部分和余数部分转化为ASIIC 码,并送显返回 DOS 2、实验程序及注释CODE SEGMENT ASSUME CS:CODE START: CALL DECIB
11、IN ;调用十进制转二进制子程序CALL CRLF ;调用添加回、换行符子程序CALL BINIHER ;调用二进制转十六进制并显示子程序CALL CRLF ;调用添加回、换行符子程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 19 页 - - - - - - - - - 微机实验报告- 5 - MOV AH,4CH INT 21H DECIBIN PROC MOV BX,0 ;BX 清零MOV CL,2 ;限定输入两位BCD 码NEW: MOV AH,1 ;DOS
12、调用,键入字符并回显INT 21H SUB AL,30H ;比较键入字符是否在0 到 9 之间JL NEW1 ;小于零 ,即不在范围内,就跳到NEW1 CMP AL,9 JG NEW1 ;左右则转移CBW ;将一个字节转化为字XCHG AX,BX ;交换两个寄存器之间的内容MOV CX,10 ;十进制数 10 入 CX MUL CX ;表达式的值与 AX 内容相乘, 并将结果存于 AX XCHG AX,BX ADD BX,AX POP CX DEC CL JNC NEW RET ;返回到原来调用指令的下一条指令NEW1: PUSH CX ;NEW1 为固定光标程序,直到输入09 MOV AH,
13、3 数字,光标才会移动INT 10H MOV AH,2 DEC DL INT 10H POP CX JMP NEW DECIBIN ENDP BINIHER PROC MOV CH,4 ;记录转换后的十六进制位数RORATE: MOV CL,4 ;利用 CL 当计数器,记录寄存器数位移动次数ROL BX,CL ;循环左移四位,相当于除以16 MOV AL,BL ;把 BX 低八位 BL 内数据转移至 al AND AL,0FH ;高四位清零ADD AL,30H CMP AL,3AH JL NEXT ;AL 小于等于 3AH 转移ADD AL,7H NEXT: MOV DL,AL ;把 ASCI
14、I 码装入 DL MOV AH,2 ;DOS 调用,显示字符INT 21H DEC CH ;CH 减一,减到零时,零标志置1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - 微机实验报告- 6 - JNZ RORATE RET BINIHER ENDP CRLF PROC ;实现换行功能MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H RET CRLF ENDP C
15、ODE ENDS END START 3、运行结果输入数字 12此时屏幕显示 000C 4、程序改进问题原因:程序只有输入09 才能正常运行,若输入其他的,无法继续执行程序,例如字母等等。改进后的程序:在判断是否是09 后,加入跳转程序方法一:SUB AL ,30H ;比较键入字符是否在0 到 9 之间JL EXIT ;小于零 ,即不在范围内,就跳到EXIT CMP AL,9D JG EXIT EXIT :PROC NEAR ;返回 DOS MOV AH ,4CH INT 21H EXIT1 ENDP 方法二:SUB AL,30H ;比较键入字符是否在0 到 9 之间JL NEW1 ;小于零
16、,即不在范围内,就跳到NEW1 CMP AL,9 JG NEW1 ;左右则转移NEW1: PUSH CX ;NEW1 为固定光标程序, 直到输入 09 MOV AH,3 数字,光标才会移动INT 10H MOV AH,2 DEC DL INT 10H POP CX JMP NEW 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 19 页 - - - - - - - - - 微机实验报告- 7 - 第二部分:微机接口实验一、实验目的实验内容是配合理论课的教学,掌握、了解一些
17、基本接口芯片的使用和基本工作原理。二、实验题目(一)串行接口实验题目1、实验内容编程实现讲主机键盘输入的字符加1 后在屏幕上显示,按ESC键(键值 27)推出唱戏返回 DOS。 (讲 8250 设成自收自发方式)2、实验目的了解串行通讯的基本原理,掌握串行接口芯片8250的工作原理和编程方法。3、流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 19 页 - - - - - - - - - 微机实验报告- 8 - 4 实验连线连线见下图, 8250 芯片 插 在 40
18、 芯 的通用插 座上。 CS 接 2B8H-2BFH 。5 实验程序及注释NAME 8250 DATA SEGMENT ;定义数据段DIVID DW 0CH ;对应 9600波特率的除数DATA ENDS ;数据段结束STACK1 SEGMENT PARA STACK ;定义栈DB 100 DUP(?) ;定义 100字节STACK1 ENDS CODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK1 SUB1 PROC FAR ;标准程序头START: PUSH DS ;8250 初始化MOV AX,0 ;8 位数据位,一个停止位PU
19、SH AX MOV AL,80H ;设 DLAB=1 MOV DX,2BBH OUT DX,AL MOV AX,DIVID ;取除数MOV DX,2B8H OUT DX,AL ;写入除数低字节MOV AL,AH MOV DX,2B9H OUT DX,AL ;写入除数高字节MOV AL,0AH MOV DX,2BBH ;写入线路控制寄存器OUT DX,AL MOV AL,13H MOV DX,2BCH ;写入 MODEM 控制寄存器OUT DX,AL MOV AL,0 MOV DX,2B9H ;写入中断允许寄存器名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
20、 - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 19 页 - - - - - - - - - 微机实验报告- 9 - OUT DX,AL WAIT_FOR: MOV DX,2BDH ;读线路允许寄存器IN AL,DX TEST AL,1EH ;出错否JNZ ERROR TEST AL,1 ;接收数据就绪否JNZ RECEIVE ;转接收TEST AL,20H ;发送器空否JZ WAIT_FOR ;返回等待MOV AH,1 INT 16H ;读键盘JZ WAIT_FOR ;无按键返回等待MOV AH,0 ;读按键INT 16H MOV DX,2B8H ;发
21、送OUT DX,AL JMP WAIT_FOR ;返回等待RECEIVE: MOV DX,2B8H ;读接受数据IN AL,DX AND AL,7FH ;保留 7 位数据CMP AL,1BH ;是 ESC 否JNZ CHAR MOV AX,4C00H ;返回 DOS INT 21H CHAR: ADD AL,1 ;加一送显PUSH AX ;备查MOV AH,14 ;显示接受字符INT 10H POP AX CMP AL,0DH ;是否回车符JNZ WAIT_FOR ;不是返回等待MOV AL,0AH ;是回车则加换行MOV AH,14 INT 10H JMP WAIT_FOR ERROR: M
22、OV DX,2B8H ;出错则清除IN AL,DX MOV AL,? ;显示 ?MOV AH,1 INT 10H JMP WAIT_FOR SUB1 ENDP CODE ENDS END START 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 19 页 - - - - - - - - - 微机实验报告- 10 - 6 运行结果输入 5 屏幕显示 6 输入 A 屏幕显示 B 按下 Esc键返回未来汇编界面7 遇到问题及解决方法写除数寄存器时, 8250 接 2MHZ ,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年汇编语言程序设计微机实验报告 2022 汇编语言 程序设计 微机 实验 报告
限制150内