1、A2-1.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSDATA SEGMENTSADD DB 30H,30H,32H,35H,36H ;十进制数:00256DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, OFFSET SADDMOV SI, AXMOV BX, 000AHMOV CX, 0004HMOV AH, 00HMOV AL, SISUB AL, 30HA1: IMUL BXMOV DX, SI+01AND DX, 00FFH
2、ADC AX, DXINC SILOOP A1A2: JMP A2CODE ENDSEND START123 实验步骤(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;(3)运行程序,然后停止程序;(4)查看AX 寄存器,即为转换结果,应为:0100 ;(5)反复试几组数据,验证程序的正确性。13. 十六进制数转换为ASCII码131 实验原理由表1-2-1 中十六进制数与ASCII 码的对应关系可知:将十六进制数0H09H 加上30H后得到相应的ASCII码,AHFH 加上37H 可得
3、到相应的ASCII码。将四位十六进制数存放于起始地址为3500H 的内存单元中,把它们转换为ASCII 码后存入起始地址为350AH 的内存单元中。自行绘制流程图。132 实验程序清单CODE MOV CX,0004HMOV DI,3500H ;十六进制数源地址MOV DX,DI MOV AX,DXAND AX,000FH ;取低4位CMP AL,0AHJB A2 ;小于0AH则转A2ADD AL,07H ;在AFH之间,需多加上7H ADD AL,30H ;转换为相应ASCII码MOV DI+0DH,AL ;结果存入目标地址DEC DIPUSH CXMOV CL,04HSHR DX,CL ;
4、将十六进制数右移4位POP CXA3: JMP A3133 实验步骤(1)编写程序,经编译、链接无误后装入系统;(2)在3500H、3501H 中存入四位十六进制数203B,即键入E3500,然后输入3B 20;(3)先运行程序,然后再停止运行;(4)键入D350A,显示结果为:0000:350A 32 30 33 42 CC ;(5)反复输入几组数据,验证程序功能。实验二 循环程序设计实验2.1.1 实验目的1. 加深对循环结构的理解;2. 掌握循环结构程序设计的方法以及调试方法。2.1.2 实验设备2.1.3 实验内容及步骤2. 2 求某数据区内负数的个数221 实验原理设数据区的第一单元
5、存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1 的数据的个数累加起来,即得到区内所包含负数的个数。实验程序流程图如图1-5-2所示。图2-1 程序流程图222 实验程序清单 MOV DI, 3000H ;数据区首地址MOV CL, DI ;取数据个数XOR CH, CHMOV BL, CHINC DI ;指向第一个数据 MOV AL, DITEST AL, 80H ;检查数据首位是否为1JE A2INC BL ;负数个数加1 INC DIMOV DI, BL ;保存结果223 实
6、验步骤(1)按实验流程编写实验程序;(2)编译、链接无误后装入系统;(3)键入E3000,输入数据如下:300006 (数据个数)300112300288300382300490300522300633(4)先运行程序,然后停止程序运行;(5)查看3007 内存单元或寄存器BL 中的内容,结果应为03;(6)可以进行反复测试来验证程序的正确性。23 学生成绩名次表231 实验原理将分数在1100 之间的30 个成绩存入首地址为3000H 的单元中,3000HI表示学号为I的学生成绩。编写程序,将排出的名次表放在3100H 开始的数据区,3100HI 中存放的为学号为I的学生名次。232 实验程
7、序清单 MOV AX,0000HMOV DS,AXMOV ES,AXMOV SI,3000H ;存放学生成绩MOV CX,001EH ;共30个成绩MOV DI,3100H ;名次表首地址 CALL BRANCH ;调用子程序MOV AL,1EHSUB AL,CLINC ALMOV BX,DXMOV BX+DI,ALA4: JMP A4;=扫描成绩表,得到最高成绩者的学号=BRANCH: PUSH CXMOV CX,001EHMOV AL,00HMOV BX,3000HMOV SI,BX CMP AL,SIJAE A3MOV AL,SIMOV DX,SISUB DX,BX INC SILOOP
8、 A2ADD BX,DXMOV BX,ALRET233 实验步骤(1)绘制流程图,并编写实验程序;(3)将30 个成绩存入首地址为3000H 的内存单元中;(4)调试并运行程序;(5)检查3100H 起始的内存单元中的名次表是否正确。实验三、8255 并行接口实验-流水灯显示实验31 实验目的1. 学习并掌握8255 的工作方式及其应用;2. 掌握8255 典型应用电路的接法。32 实验设备33 实验内容 流水灯显示实验。编写程序,使8255 的A口和B口均为输出,数据灯D7D0由左向右,每次仅亮一个灯,循环显示,D15D8与D7D0 正相反,由右向左,每次仅点亮一个灯,循环显示。34 实验原
9、理并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O 接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0-基本输入/输出方式、方式1-选通输入/输出方式、方式2-双向选通工作方式。8255 的内部结构及引脚如图2-6-1 所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-6-2所示。图3-1 8255内部结构及外部引脚图35 实验步骤流水灯显示实验使8255的A口和B口均为输出,
10、数据灯D7D0 由左向右,每次仅亮一个灯,循环显示,D15D8 与D7D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图2-6-5所示。实验步骤如下所述:(1)按图2-6-5连接实验线路图;(2)编写实验、框图、程序,经编译、链接无误后装入系统;(3)运行程序,观察LED 灯的显示,验证程序功能;(4)自己改变流水灯的方式,编写程序。图3-3 8255流水灯实验接线图8255在此系统中的端口地址为: 0640H、0642H、0644H、0646H36 实验程序清单DW 32 DUP(? CODE MOV DX , 0646HMOV AL , 80HOUT DX , ALMOV BX , 8001HAA1: MOV DX , 0640HMOV AL , BHROR BH , 1MOV DX , 0642HMOV AL , BLROL BL , 1CALL DELAYJMP AA1DELAY:MOV CX, 0F000HAA2: PUSH AXPOP AXLOOP AA237 思考题1、改变流水灯的方式,例如:左右移动等。2、端口地址为: 0640H、0642H、0644H、0646H,为何都为偶地址?3、8255的两个控制字共用一个端口地址,如何区别?
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1