资源描述
-/ 微微 机机 原原 理理 实实 验验 报报 告告 班级:班级: 指导老师:指导老师: 学号:学号: 姓名:姓名: -/ -/ 实验一实验一 两个多位十进制数相加的实验两个多位十进制数相加的实验 一、实验目的一、实验目的 学习数据传送和算术运算指令的用法 熟悉在 PC 机上建立、汇编、链接、调试和运行汇编语言程序 的过程。 二、实验内容二、实验内容 将两个多位十进制数相加,要求被加数和加数均以 ASCII 码形 式各自顺序存放在以 DATA1、DATA2 为首的 5 个内存单元中(低 位在前) ,结果送回 DATA1 处。 三、程序框图三、程序框图 图 3-1 -/ 4、、参考程序清单参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX -/ MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT21H ADDAPROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUBBYTE PTR [SI],30H SUBBYTE PTR [DI],30H DECSI DECDI DECBX JNZAD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADCAL,BL -/ AAA MOV [SI],AL DECSI DECDI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05H AD3: ADDBYTE PTR [SI],30H ADDBYTE PTR [DI],30H DECSI DECDI DECBX JNZAD3 RET ADDAENDP CODE ENDS ENDSTART -/ 5、、实验结果与分析实验结果与分析 这次实验依次将相加数与被加数存入 AL,BL,依次从低位向 高位相加,然后把结果放在内存中。 6、、实验体会实验体会 这次实验是微机原理课的第一次实验,主要是为了通过这次的 实验,让我们对这个软件的编程有更深的了解、知道如何运行程序。 在实验中误把 C00H ,写成了 COOH.从中,我学到了许多课本里学不 到的东西,有些意外,有些收获。 -/ 实验二实验二 排序实验排序实验 一、实验目的一、实验目的 掌握用汇编语言编写排序程序的思路和方法。 二、实验内容二、实验内容 将指定内存出开始的数据(最多为 4 位数)按从大到小的顺序 排列。第一个数字表示数据的个数(不是要比较的数值!!!) 。 三、程序流程图三、程序流程图 图 3-2 4、、程序清单程序清单 DATA SEGMENT -/ ADDR DW 8,234,35,67,876,54,39,765,237 DATA ENDS STACK SEGMENT STA DW 32 DUP(?) TOP DW ? STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV SP,TOP MOV CX,WORD PTR ADDR[0] DEC CX LOOP1: MOV DI,CX MOV BX,2 LOOP2: MOV AX,WORD PTR ADDR[BX] CMP AX,WORD PTR ADDR[BX+2] -/ JGE CCC XCHG AX,WORD PTR ADDR[BX+2] MOV WORD PTR ADDR[BX],AX CCC: ADD BX,2 LOOP LOOP2 MOV CX,DI LOOP LOOP1 EXIT: MOV AX,4C00H INT 21H CODE ENDS END START 5、、实验结果与分析实验结果与分析 -/ 这次实验是给我们 8 个数字,按从大到小的顺序排列出来,定 义的数字中 8 是一个指示数字的个数量。 6、、实验体会实验体会 通过此次的实验,懂得了用汇编语言编写排序程序的思路和方 法,知道义的数字中 8 是一个指示数字的个数量,不是一个数。更 加加强了我对程序的操作的熟练程度。 -/ 实验三实验三 字符串按字符串按 ASCIIASCII 值的查找值的查找 1、、实验目的实验目的 1.掌握字符串按 ASCII 值查找的方法。 二、实验设备二、实验设备 计算机一台。预装 Windows XP、宏汇编 MASM5。 三、实验内容三、实验内容 编写能够实现以下要求的汇编语言程序,并上机实现。 1.对一个给定的字符串,统计其中 0~9 的个数,并在屏幕上显 示这个字符串和 0~9 的个数(3 位十进制数) 。 四、实验框图四、实验框图 程序开始 DB 定义一个字符串 将字符串的长度转换成十进制 符串按 ASCII 值查找 、执行 INT 21H 结束 -/ 五、程序清单五、程序清单 DATA SEGMENT STRING DB GFDsfgfdsGDA0935J/:@[]`{}KO6ASD78,$ L1 DB ? DATA ENDS STACK SEGMENT PARA STACK STACK DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START PROC FAR BEGIN: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA BX,STRING MOV DL,0 LP2: MOV AL,[BX] CMP AL,30H -/ JB LP3 CMP AL,39H JA LP3 INC DL LP3: CMP AL,$ JE LP4 INC BX JMP LP2 LP4: MOV L1,DL LEA DX,STRING MOV AH,9 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H -/ MOV AL,L1 MOV AH,0 CALL B_D RET START ENDP B_D PROC ;二——十进制转换及显示 MOV CL,100 DIV CL PUSH AX MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POP AX MOV AL,AH MOV AH,0 MOV CL,10 DIV CL PUSH AX -/ MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POP AX MOV DL,AH ADD DL,30H MOV AH,2 INT 21H RET B_D ENDP CODE ENDS END BEGIN -/ 六、实验结果与分析六、实验结果与分析 大写的英文字符 A~Z 的 ASCII 码是 41H~5AH,小写的英文字符 a~z 的 ASCII 码是 61H~7AH,如果一个字符的 ASCII 码在这两个范 围内,则满足要求。 7、、实验体会实验体会 通过此次的实验更加加强了我对 ASCII 码转换的应用,以后可 以对这个问题,有更深的了解,而且我能很快的用它进行查找,很 有收获。 -/ 实验四实验四 DOSDOS 输入输出功能的使用输入输出功能的使用 一、实验目的一、实验目的 1.掌握 8086 汇编语言程序的汇编、链接、运行的方法。 2.掌握用软中断调用 DOS 输入输出功能的方法。 3.掌握将二进制数转换成十进制数的编程方法。 二、实验设备二、实验设备 计算机一台。预装 Windows XP、宏汇编 MASM5。 3、、实验内容实验内容 程序开始 DB 定义一个字符串 将字符串的长度转换成十进制 MOV DL,字符 ASCII 码 MOV AH,2 INT 21H “$”结束 -/ 四、程序清单四、程序清单 DATA SEGMENT STRING1 DB 1234567890ABCDEFG,$ ;准备显示的字符串 COUNT DB $-STRING1-1 ;上面字符串的长度 DATA ENDS STACK SEGMENT PARA STACK STACK DB 100 DUP(100) STACK ENDS CODE SEGMENT START PROC FAR ASSUME CS:CODE, SS:STACK,DS:DATA BEGIN: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA DX,STRING1 ;输出字符串 MOV AH,9 INT 21H ;输出回车和换行符,以实现另起一行 MOV DL,0DH ;输出回车命令 -/ MOV AH,2 INT 21H MOV DL,0AH ;输出换行命令 MOV AH,2 INT 21H MOV AL,COUNT ;将字符串长度转换成 3 位十进制数 输出 MOV AH,0 ;高 8 位补 0 MOV CL,100 DIV CL ;除以 100 获得百位数 PUSH AX ;暂存结果和余数 MOV DL,AL ADD DL,30H ;换成 ASCII 码 MOV AH,2 ;输出字符到屏幕 INT 21H POP AX ;恢复结果和余数 MOV AL,AH ;余数作为被除数 MOV AH,0 MOV CL,10 DIV CL ;除以 10 获得十位数 PUSH AX -/ MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POP AX MOV DL,AH ADD DL,30H MOV AH,2 INT 21H MOV DL,0DH ;输出回车命令 MOV AH,2 INT 21H MOV DL,0AH ;输出换行命令 MOV AH,2 INT 21H RET START ENDP CODE ENDS -/ END BEGIN 五、实验结果及分析五、实验结果及分析 这就是二进制转为十进制的结果 六、实验体会六、实验体会 这次实验,我基本掌握 8086 汇编语言程序的汇编、链接、运行 的方法。同时也学会了用软中断调用 DOS 输入输出功能的方法,还 有基本的掌握将二进制数转换成十进制数的编程方法。这次实验学 到了很多,希望以后更有进步。 -/ 实验五实验五 8255 并行并行 I/O 口实验口实验 一、实验要求一、实验要求 利用 8255 可编程并行口芯片,实现输入/输出实验,实验中用 8255PA 口作输入,PB 口作输出。 二、实验目的二、实验目的 1、了解 8255 芯片结构及编程方法。 2、了解 8255 输入/输出实验方法。 三、预备知识三、预备知识 8255 是 Intel 公司生产的与 Intel8080/8085 系列的 MPU 配套 的可编程外围接口电路,简称 PPI。它有 A、B、C 三个八位端口寄 存器,通过 24 位端口线与外部设备相连,基中 C 口可分为上半部和 下半部。这 24 根端口线全部为双向三态。三个端口可分二组来使用, 可分别工作于三种不同的工作方式。 四、实验原理图及连线四、实验原理图及连线 1、本实验主要用到的模块:8255 模块、开关量输出模块、 0-1 指示模块、实验译码单元等; 2、PA0-PA7 分别接开关量输出模块 S0-S7 对应的插座; 3、PB0-PB7 分别接 0-1 指示模块 DO71-DO78 对应的插座; 4、8255A 的片选/CS 接地址译码单元的 2A0-2A7; 5、数据线 XD0—XD7 接系统数据线区的任一插座。 -/ 图 3-3 五、实验内容五、实验内容 将实验的线路连接好后,编程,将 8255 的 A 口作为输入,输 入信号由 8 个逻辑电平开关提供,B 口作为输出,其内容由发光二 极管来显示。 六、程序清单六、程序清单 L8255_CMD EQU 2A3H L8255_PA EQU 2A0H L8255_PB EQU 2A1H L8255_PC EQU 2A2H CODE SEGMENT ASSUME CS:CODE,DS:CODE -/ BEGIN: MOV CX,0FFH AA: LOOP AA MOV DX,L8255_CMD MOV AL,9CH ;10011000 OUT DX,AL NOP NOP NOP NOP NOP BB: MOV DX,L8255_PA IN AL,DX XOR AL,0FFH MOV DX,L8255_PB OUT DX,AL JMP BB CODE ENDS END BEGIN -/ 七、程序框图七、程序框图 图 3-4 八、实验步骤八、实验步骤 1、参照图中的内容连好线; 2、运行上位机软件,装载并运行相应程序即可(联机请参考程 序 8255.asm) 。 注意:同学们自己编写程序时,8255 的/CS 连线可以接地址译 码单元的其他信号,其它连线相同。如果用的端口与本实验不一样, 也可以改变 IO 口的连线。 九、仪器配置九、仪器配置 ZY15MicInt12BB 微机原理及接口实验箱 一台。 十、实验现象十、实验现象 当读到某个开关处于高电平时,对应的发光二极管就会亮。 11、、思考题思考题 根据程序列出实验中 8255 的各个端口的地址,如果 8255 的/CS 开始 延时 置 8255 工作方式 读 8255PA 口 置 8255PB 口 -/ 改接译码信号 280H,其它信号不变,那么对应的端口地址又是多少? 答:8255 命令-2A3H PA-2A0H PB-2A1H PC-2A2H; 8255 的/CS 改接译码信号 280H 后对应的端口地址是 8255 命令- 283H PA-280H PB-281H PC-282H 12、、实验结果与分析实验结果与分析 按照实验指导连接电路后,将所有的开关都置于高电平,会发 现所有的灯都亮了。然后所有的开关置于低电平,所有的灯都熄了。 -/ 13、、实验体会实验体会 本次实验是按照老师要求和讲解做的,刚开始时,按照老师说的 步骤,将线路连接好后,通过众友连接,发现连接不上电路,最后 换了一个串口线,最终成功的连上了,通过了编译但又在运行的时 候出现了问题,和其他人做了比较,依旧没有发现问题,最后经过 自己耐心的检查,发现有根线接错了,改正之后重新编译运行,最 后所有的 LED 灯亮了。此次实验也让我收获颇多,做实验的时候我 们应该仔细认真。 -/ 实验六实验六 ADC0809A/D 转换实验转换实验 一、实验目的一、实验目的 1、加深理解逐次逼近法模数转换器的特征和工作原理; 2、掌握 A/D 转换芯片与 8088/86 的接口方法; 3、了解 A/D 芯片 ADC0809 转换性能及编程方法。 二、预备知识二、预备知识 A/D 转换器大致有三类:一是双积分 A/D 转换器,优点是精度 高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近 A/D 转换器, 精度,速度,价格适中;三是并行 A/D 转换器,速度快,价格也昂 贵。 -/ 实验用的 ADC0809 属第二类,是八位 A/D 转换器。每采集一次 一般需 100us。本程序是用延时查询方式读入 A/D 转换结果,也可以 用中断方式读入结果,在中断方式下,A/D 转换结束后会自动产生 EOC 信号,做为转换完成的信号。 三、实验原理说明及连线三、实验原理说明及连线 1、本实验的位置在实验箱的“ADC0809 模块” ; 2、本实验用芯片 ADC0809 的片选地址为 2B8H,实验箱上已 固定好,不需要再连线; 3、将该实验模块的 CLOCK 和“信号源模块”的 1MHz 信号连 接起来; 4、用排线将“系统数据总线输出单元”中的任意一组数据线和 本实验模块的“ADC0809:XD0-XD7”连接起来; 5、将通道 0 模拟量输入端 IN0 接模拟信号产生电路模块中的电 位器 R093 的中心抽头,然后将 R093 的两端一端接地,另一端接 VCC(+5V) 。 -/ 图 3-8 四、实验内容四、实验内容 利用电位器输出一个幅值可调的直流电压信号,送入 ADC0809 的通道 0,将转换后的结果在屏幕上显示出来,并验证它与输入电 压的关系。 五、实验步骤五、实验步骤 1、确认连接好线路; 2、装载运行程序。 -/ 六、实验框图六、实验框图 启启动动A/D 转转换换延延时时 读读取取转转换换结结果果 程程序序开开始始 延延时时 处处理理及及显显示示 图 3-9 七、仪器配置七、仪器配置 ZY15MicInt12BB 微机原理及接口实验箱 一台 八、实验现象八、实验现象 当用户扭动电阻器时,屏幕将显示相应的数值。 九、思考题九、思考题 按图中的连接线路,输入一个 3V 的模拟信号,输出的数字信 号的理论值是多少,在实验箱上验证该值的正确性。 实验中用的 ADC0809 的 IN0 的地址是什么? 答:3V 的模拟信号转化成数字信号后的理论值是 99H. 实验中用的 ADC0809 的 IN0 的地址是 2B8H。 10、、程序清单程序清单 CODE SEGMENT -/ ASSUME CS:CODE START: MOV DX,2B8H ;2B0H-2B7H MOV AL,00H OUT DX,AL CALL DELAY IN AL,DX CALL SHOW CALL DELAY JMP START SHOW PROC NEAR PUSH DX PUSH AX MOV CL,4 SHR AL,CL AND AL,0FH CALL H2C JC SHOW_OUT MOV DX,88H OUT DX,AL -/ POP AX AND AL,0FH CALL H2C JC SHOW_OUT MOV DX,88H OUT DX,AL MOV CX,0FFH DELA: LOOP DELA SHOW_OUT: POP DX RET SHOW ENDP H2C PROC NEAR CMP AL,0 JAE N0_9 JMP H2C_ERR N0_9: -/ CMP AL,9 JBE N0_9_OK CMP AL,0AH JAE HEX_CMP JMP H2C_ERR HEX_CMP: CMP AL,0FH JBE HEX_CMP_OK JMP H2C_ERR HEX_CMP_OK: CLC ADD AL,37H JMP CMP_OUT N0_9_OK: CLC ADD AL,30H JMP CMP_OUT H2C_ERR: STC CMP_OUT: RET H2C ENDP -/ DELAY PROC NEAR MOV CX,0FFH DELEA: LOOP DELEA RET DELAY ENDP CODE ENDS END START 11、、实验结果与分析实验结果与分析 -/ 接好电路后,微调电位器,我们就会看到显示屏上的数字从 00 到 FF 的变换。最后通过询问我们班的学霸才知道,这是将模拟电转 换为数字信号,而且还可以通过显示的数字知道电压是多少。 12、、实验体会实验体会 这次实验,因为有了上次实验的经验,所以做的格外的顺利。 但是要能完全理解,需要下功夫。
展开阅读全文
相关搜索