微机原理实验三

合集下载

微机原理第三次实验报告

微机原理第三次实验报告

实验三DOS中断调用实验实验报告健行理工1402班陈丽红 201424450202一、实验目的掌握字符和数据的显示方法。

二、实验内容先显示信息“INPUTSTRING,THE END FLAG IS $”再接收字符。

如为0-9,则计数器加1,并显示计数,如为非数字,则直接显示,但不计数。

三、程序框图开始段寄存器和堆栈段初始化数字字符计数器清0回车换行显示提示信息接收键入字符并显示是$字符调用QUI,返回DOS结束是回车键是0-9计数器BX加1,保存计数器的值后将其转化为ASCII码回车换行显示计数结果回车换行调用DISP,显示字符YNYYNN四、程序说明本次实验重点在于了解中断调用的步骤:(1)准备入口参数;(2)功能号送AH;(3)执行INT n命令,熟练掌握向量号21H的部分常用功能调用。

程序设计时通过对输入的字符进行判断,根据判断结果进入不同的子程序段运行,显示运行结果。

五、源程序清单与执行结果5.1 源程序清单DATA SEGMENT ;定义数据段,DATA为D1 DB 'INPUTSTRING, THE LAST FLAG IS', 0DH, 0AH,'$' 段名,将信息存放在D2 DB 0DH, 0AH, '$' D1,D2中DATA ENDSSTACK SEGMENT STACK ;定义堆栈段DB 100 DUP(?)STACK ENDSCODE SEGMENT ;说明代码段、数据段、堆栈段 ASSUME CS:CODE,DS:DATA,SS:STACKBG: MOV AX,DATAMOV DS, AX ;给DS赋段值MOV BX, 0 ;数字字符计数器BX清0JMP L1 ;跳转至L1QUI: MOV AH,4CH ;返回DOSINT 21HDISP: MOV DX,OFFSET D2 ;输出回车换行MOV AH,9HINT 21HMOV AH,2H ;显示AL中的字符内容MOV DL,ALINT 21HL1: MOV DX,OFFSET D2 ;输出回车换行MOV AH,9HINT 21HMOV DX,OFFSET D1 ;输出“INPUTSTRING,THE END FLAG IS” MOV AH,9HINT 21HMOV AH,1H ;键盘输入并显示INT 21HCMP AL,'$' ;判断输入字符是否为'$'JE QUI ;是则调用QUI,返回DOSCMP AL,0DH ;判断输入字符是否为回车,是则输出 JNE L2 回车换行,进入下一次L1循环,不是MOV DX,OFFSET D2 则跳转至L2MOV AH,9HINT 21HJMP L1L2: CMP AL,'9' ;判断输入字符是否为0-9,是则计数 JA DISP 器BX加1,不是则跳转至DISPCMP AL,'0'JB DISPINC BXPUSH BX ;将BX的内容压入堆栈,保存ADD BX,30H ;将BX中的数值转化为ASCII码MOV DX,OFFSET D2 ;输出换行MOV AH,9HINT 21HMOV AH,2H ;显示计数MOV DL,BLINT 21HPOP BX ;弹出BX的内容JMP L1CODE ENDSEND BG5.2 执行结果截图(1)接收字符为0-9,计数器加1,并显示计数。

微机原理实验报告

微机原理实验报告

实验报告题目:实验三循环程序设计专业:网络工程班级: 0902学号: 0930040250姓名:郭文明指导教师:胡美娇完成日期:2011年12月12日一、实验目的:1、掌握循环程序的设计方法。

2、掌握比较指令、转移指令和循环指令的使用方法。

3、进一步掌握调试工具的使用方法。

二、实验环境:硬件环境 IBM/PC 及其兼容机软件环境操作系统DOS编辑程序EDIT或其他编辑程序汇编程序MASM.EXE连接程序LINK.EXE调试程序DEBUG.EXE三、实验内容:1. 从屏幕上输入一个三位数的十进制数,把十进制的值存放在AX寄存器中2. 把内存单元ARRAY 中存放的数值,显示在屏幕上(即完成二进制与十进制直接的转换)3. 计算1+2+……n=?,其中n通过键盘输入。

要求在屏幕上提供如下信息:Please input a number(1 350): 100 ;出现此信息后通过键盘输入一个小于628的无符号整数The sum is: 5050四、实验要求:1、按照实验程序流程图,独立完成源代码的编写。

开始从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和)BX送1(BX存放每次循环累加的数,每循环一次,BX值加1)ADD AX,BXINC BXN(CX)-1=0Y累加和(在AX中)转换为十进制数并显示结束2、在DOS环境下使用MASM完成对源代码的编译、连接,有必要的情况下使用debug.exe进行调试。

3、WINDOS环境下使用EMU8086完成上第2步的工作。

4、与程序流程图比较,验证是否完成规定的功能,若未达要求,返回第1步。

5、提交完成的源代码,要求对关键语句进行注释。

①data segmentbuf db 10db ?db 10 dup(?)data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset bufmov ah,0ahint 21hlea si,buf+2mov cl,buf+1mov ch,0mov ax,0mov dl,10aa:mul dlsub [si],30hadd al,[si]adc ah,0inc siloop aamov bx,axmov ah,4chint 21hcode endsend start②data segmentarray dw 9997buf db 5 dup(?)data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,axlea si,buf mov cx,0mov ax,array mov bx,10aa:mov dx,0div bxmov [si],dlinc siinc cxcmp ax,0jnz aabb: dec siadd [si],30hmov dl,[si]mov ah,2int 21hloop bbmov ah,4chint 21hcode endsend start③DATA SEGMENTBUF DB 10DB ?DB 10 DUP(?)array dw 0MEG DB 'Please input a number(1~350):',10,13,'$' MEG1 DB 0dh,0ah,'The sum is:$'DATA ENDSSTACK SEGMENTDB 100 DUP('S')STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXCALL INPUT1MOV CX,AXXOR AX,AXMOV BX,1LOP: ADD AX,BXINC BXLOOP LOPmov array,axCALL OUTPUT1MOV AH,4CHINT 21HINPUT1 PROC NEARLEA DX,MEGMOV AH,9INT 21HMOV DX,OFFSET BUF MOV AH,10INT 21HLEA SI,BUF+2MOV CL,BUF+1MOV CH,0MOV AX,0MOV DL,10A1:MUL DLSUB [SI],30HADD AL,[SI]ADC AH,0INC SILOOP A1MOV BX,AXRETINPUT1 ENDPOUTPUT1 PROC NEAR LEA DX,MEG1MOV AH,9INT 21Hlea si,bufmov cx,0mov ax,array mov bx,10aa:mov dx,0div bxmov [si],dlinc siinc cxcmp ax,0jnz aabb: dec siadd [si],30hmov dl,[si] mov ah,2int 21hloop bbRETOUTPUT1 ENDPCODE ENDSEND START6、写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。

微机原理实验报告

微机原理实验报告

微机原理实验报告概述:微机原理是计算机科学与技术专业中的一门重要课程,通过实验学习,可以加深对计算机内部运行原理的理解,提高软硬件的开发和调试能力。

本实验报告将介绍我对微机原理实验的学习和思考。

实验一:二进制转换实验在这个实验中,我首先了解了二进制数的概念以及其和十进制数的转换方法。

通过实际操作,我加深了对计算机内部数据表示方式的理解。

这对于后续学习计算机系统结构和编程语言至关重要。

实验二:逻辑门电路实验逻辑门电路是计算机硬件的基础组成部分,通过实验,我学会了使用逻辑门芯片构建各种逻辑电路,并能够通过真值表分析和验证逻辑电路的正确性。

这对于理解计算机内部的数据处理和控制逻辑有着直接的帮助。

实验三:运算器设计实验在这个实验中,我通过学习和设计算术逻辑单元(ALU),了解了计算机的算术操作过程,并能够通过运算器实现基本算术运算。

这对于理解计算机内部数据的处理和计算机指令的执行有着重要的意义。

实验四:存储器与外设实验存储器是计算机系统的重要组成部分,通过实验,我深入了解了存储器的类型、组织结构和访问方式,并通过外设与存储器的交互,实践了计算机系统的输入和输出过程。

实验五:微处理器实验微处理器是计算机系统中最核心的部件,通过实验,我学习了微处理器的基本运行原理,能够通过汇编语言编写程序,并通过微处理器执行程序实现特定的功能。

这个实验为我今后学习计算机体系结构和操作系统打下了坚实的基础。

实验总结:通过这几个实验,我深入了解了微机原理课程的实践内容和相关知识。

实验的过程中,我不仅学会了使用仪器设备和工具,还培养了自己的动手能力和团队合作精神。

通过不断的实践,我对计算机内部结构和运行原理有了更深刻的理解,也提高了我的问题解决能力和创新思维。

未来展望:微机原理实验的学习只是计算机科学与技术专业中的一小部分。

我希望在今后的学习过程中能加深对计算机体系结构、操作系统、编程语言等方面的学习,并不断深入钻研,成为一名优秀的计算机科学与技术专业人才。

微机原理实验三实验报告

微机原理实验三实验报告

实验3. 循环程序设计一、实验目的⒈掌握移位指令的使用方法。

⒉学会循环结构程序的编程方法。

⒊利用DEBUG调试程序查看循环程序循环过程中CS和IP的变化情况。

二、实验要求⒈编写程序并上机调试,记录运行结果。

⒉用DEBUG调试程序调试所编程序,查看并记录每条指令内存单元地址及执行结果(包括F标志寄存各位值。

)⒊注意观察并记录每条指令执行后CS和IP寄存器值变化情况,以加深对循环程序的概念的理解。

三、实验内容⒉编写统计15个学生数学学习成绩程序。

要求:分别统计出低于60分,60-69分,70-79分,80-89分,90-100分的人数,并存放到S5,S6,S7,S8,S9,S10对应内存单元中。

源程序代码;DATA SEGMENTDATA1 DB 55,60,65,88,67,70,75,80,77,85,90,66,95,53,100DATA2 DB 5 DUP(?)DATA ENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,15LEA SI,DATA1LEA DI,DATA2AGAIN:MOV AL,[SI]CMP AL,90JB NEXT1INC BYTE PTR[DI]JMP NEXT0NEXT1:CMP AL,80JB NEXT2INC BYTE PTR[DI+1]JMP NEXT0NEXT2:CMP AL,70JB NEXT3INC BYTE PTR[DI+2]JMP NEXT0NEXT3:CMP AL,60JB NEXT4INC BYTE PTR[DI+3]JMP NEXT0NEXT4:INC BYTE PTR[DI+4]NEXT0:INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START程序运行结果截图:四、实验总结本次实验掌握移位指令的使用方法。

微机原理实验报告

微机原理实验报告
实验程序:
结果记录:
一、实验目的
1、掌握DVCC仿真系统的使用方法
2、I/O口的使用方法
3、掌握外部中断的方法
二、实验设备
DVCC仿真系统一套、Keil 51软件、Protues仿真软件、计算机一台
三、实验内容
1、当中断没发生时,8个LED按间隔依次发光。当P3.3(INT1)为负跳变时,8个LED依次左移循环点亮。
2、在P3.3(INT1)发生中断后,8个LED依次循环点亮;P3.2(INT0)中断,8个LED全部熄灭。3、设P3.3(INT1)优先级别高,观察两个中断顺序不同的结果有什么不同。
四、实验线路
实验报告
专业班级组别指导老师黄松林
姓名同组人
实验室K1-303实验名称实验三外部中断方式控制LED时间
五、程序清单、操作步骤及实验结果记录
1、当中断没发生时,8个LED按间隔依次发光。当P3.2(INT1)为负跳变时,8个LED依次左移循环点2(INT1)发生中断后,8个LED依次循环点亮;P3.3(INT0)中断,8个LED全部熄灭。

北理工微机原理实验3

北理工微机原理实验3

北理工微机原理实验3实验三串行通信一、实验目的1、了解串行通信的基本原理。

2、掌握串行接口芯片8251 的工作原理和编程方法。

2、掌握串行接口芯片8250 的工作原理和编程方法。

3、掌握对串行接口芯片的初始化编程;学会串行通信半双工和全双工的编程技巧。

二、实验内容及步骤1、利用PC 机系统的串行通信接口实现与实验系统的双机通信,PC 机的串行通信接口的端口地址为3F8H,并画出三线连接,七线连线通信接口的连线图,接口为标准RS――232插座。

图1 七线连线通信接口的连线图2、按图1连接好电路,其中8254计数器用于产生8251 的发送和接收时钟,TXD 和RXD 连在九针接口处。

3、接线。

CLK0 /8254 接1M时钟CLK /8251 接1M时钟GATE0 /8254 接+5V0UT0 /8254 接TX/RXCLK /8251 CS /8254 接Y0 /IO 地址CS /8251 接Y7 /IO 地址RXD /8251 接TXD /九针接口TXD /8251 接RXD /九针接口4、8254 计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。

5、设串行通信的波特率为1200、偶校验、数据位为7 位、一位停止位,利用查询方式实现单工通信。

要求发送方将任一文件传送到收方,收方收到后将源程序写入磁盘。

分别编写收方和发方的通信程序。

6、上述参数不变,用中断方式实现半双工通信,编写程序。

7、PC 机寄存器的端口地址如下表所示。

PC 机寄存器的端口地址PC 机寄存器的端口地址I/O 端口IN/OUT 3F8* OUT 3F8* IN 3F8** OUT 3F9** OUT 3F9* OUT 3FB OUT 3FA IN 3FC OUT 3FD IN 3FE IN * 线路控制寄存器第七位DLAB=0 ** 线路控制寄存器第七位DLAB=1 波特率和除数因子对照表因子值波特率波特率单位HZ 单位HZ MSB LSB 50 09 00 1800 75 06 00 2000 110 04 17 2400 03 59 3600 150 03 00 4800 600 00 C0 9600 1200 00 60 寄存器名称发送保持寄存器接收数据寄存器波特率因子波特率因子(MSB) 中断允许寄存器线路控制寄存器中断标志寄存器MODEM 控制寄存器线路状态寄存器MODEM 状态寄存器因子值MSB 00 00 00 00 00 00 LSB 40 3A 30 20 18 0C 三、程序实现对于整个程序的实现,可以分为几个步骤。

微机原理实验报告-分支程序设计

微机原理实验报告-分支程序设计

实验三 分支程序设计一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。

二、软硬件环境1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 5.0、DEBUG 、LINK 和EDIT 等应用程序。

三、实验涉及的主要知识单元在实际应用中,经常根据一些条件来选择一条分支执行。

汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。

下面就有符号数转移指令来了解在汇编语言程序设计方法。

四、实验内容与步骤1.实验内容(1)编写计算下面函数值的程序:⎪⎩⎪⎨⎧<-=>=0,10,00,1x x x y设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量的数据(2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。

2.实验步骤 a.实验流程图(1)计算函数值的流程图b.编写程序(1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ?DATA ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0<AL 则1-=Y JMP EXIT BIGPR: JE EQUPR ;0=AL 转入EQUPR MOV Y,1 ;0>AL 则1=Y JMP EXIT EQUPR: MOV Y,0;0=AL 则0=YEXIT: MOV AL,Y RET CODE ENDS END START(2)查找最大值的实验代码 DATA SEGMENT ARRAY DB 2,1,4,5,3 RESULT DB ? DATA ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA B X,ARRAY MOV AL,[BX] ;ARRAY 第一个数存入BXMOV CX,5 ;置循环次数 LOP: INC BX ;指针变量增1 CMP AL,[BX] ;比较AL 中数与[BX]的大小JAE L1;][BX AL ≥转入L1 MOVAL,[BX];][BX AL <则][BX AX ← L1: LOOP LOP;执行循环LOP 程序MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS END STARTc.对程序进行debug 调试,观察中间结果 (1)计算函数值的调试 1.反汇编内容①MOV AL,XX 反汇编后变成MOV AL,[0000],即XX 为数据段第一个存储单元的内容,数据段的起始偏移地址为0000。

微机原理实验报告

微机原理实验报告

微机原理实验报告微机原理与接口技术实验报告学院:信息工程学院班级:学号:姓名:实验一:系统认识实验1 实验目的:掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

2 实验设备:PC机一台,TD-PITE 实验装置一套。

3 实验内容:编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。

4 实验步骤:1. 运行Wmd86 软件,进入Wmd86 集成开发环境。

2. 环境调试,“设置”选项中选择汇编语言。

语言环境选择界面3. 新建文档,编写程序,程序如下:SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000HMOV CX, 16AA1: MOV [SI], ALINC SIINC ALLOOP AA1AA2: JMP AA2CODE ENDSEND START4. 编译连接,程序无误下载:信息界面5. 连接PC与实验系统的通讯电缆,打开实验系统电源。

6. 下载程序,查看内存3000H 开始的连续16 个存储单元中的内容,显示如下:8.由于该内存段原始数据与实验数据相同,便于区分观察,将该内存段初始化,然后查看:9.点击运行程序,在此查看该段内存:10.设置断点,执行程序:5 操作练习编写程序,将内存3500H 单元开始的8 个数据复制到3600H 单元开始的数据区中。

通过调试验证程序功能,使用E命令修改3500H 单元开始的数据,运行程序后使用D命令查看3600H 单元开始的数据。

1、编写程序如下:SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3500HMOV DI, 3600HMOV CX, 8AA1: MOV AL, [SI]MOV [DI], ALINC SIINC DILOOP AA1AA2: JMP AA2CODE ENDSEND START2、执行过程如上,内存变化如下:程序执行前程序执行后实验二:数制转换实验1、实验目的1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解;2. 熟悉程序调试的方法。

微机原理实验报告-实验三-七段数码管.doc

微机原理实验报告-实验三-七段数码管.doc

实验三七段数码管一、实验目的:进一步熟悉8255,掌握数码管显示数字的原理二、实验原理:1、实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

2、七段数码管的字形码:3、在实验 2 中加入键盘是否有输入判断,如有则去读取键盘输入数据,并加入提示信息,比如“输入十位数”,“输入个位数”,从键盘读入的数据放入十位和个位数据定义区,取代要显示的数据。

4、只需要添加两位变量作为缓存,一个记录键盘输入的值,一个记录循环减 1 的结果,将其通过数码管显示出来,减至0 时重载键盘输入的值。

三、实验步骤:静态显示:将8255 的 A 口 PA0~PA6分别与气短数码管的段码驱动输入端A~G相连,位码驱动输入端S1 接 +5V(选中), S0、 DP接地(关闭)。

动态显示:七段数码管段码不变,位码驱动输入端S1,S0 接 8255 C 口的 PC1,PC0。

8253 的接法参考第二次实验的接法,CLK0接入 1MHz, CLK1接 8255 的 PC7。

1、在两个数码管上显示两位数字,要求延时应用8253 硬件延时2、可以改变数码管显示数字,从键盘读入两位数字,并在数码管显示出来。

3、对输入数据进行倒计时计数,时间显示在数码管上,计到0 重新开始。

四、流程图:开始对 8255 进行初设置 8255C 口输从键盘读入数据Y根据十位获得段码,延时N根据个位获得段码,按键延时N循环显示这Y要输出的数重新载入输Y要输出的数据减 1五、实验结果:实验结果如预期一致,可以键盘输入倒计时的值,时间显示在数码管上,计数到0 重新计数。

六、程序代码:;******************************************;*数码管显示对键盘输入数据进行倒计时计数*;******************************************data segmentio8255a equ 288hio8255c equ 28ahio8255_mode equ 28bhio8253a equ 280hio8253b equ 281hio8253c equ 282hmesg1 db 0dh,0ah,'Input a num (00--99) for high position,other key isexit:',0dh,0ah,'$'mesg2 db 0dh,0ah,'Input a num (00--99) for low position,other key isexit:',0dh,0ah,'$'led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh; 段码buffer db , ; 存放要显示的个位和十位buffer1 db , ; 存放临时的个位和十位用于减一bz dw;data endscode segmentassume cs:code,ds:datastart:位码mov ax,datamov ds,axmov dx,io8255_mode ; 将8255 的A 口为输出mov ax,88hout dx,almov dx,offset mesg1mov ah,09hint 21h; 显示提示信息mov ah,01int 21h; 从键盘接收十位字符cmp al,'0' jl exit ; 是否小于0 ; 若是则退出cmp al,'9' jg exit sub al,30h ; 是否大于9 ; 若是则退出mov buffer,almov dx,offset mesg2 mov ah,09hint 21hmov ah,01hint 21h; 将输入的十位数存入指定地址; 显示提示信息cmp al,'0'jl exitcmp al,'9'jg exitsub al,30h; 判断方法同十位mov buffer+1,aljmp reset; 将输入的个位数存入指定地址exit:mov ah,4chint 21hreset:mov al,buffermov buffer1,almov al,buffer+1mov buffer1+1,al; 返回mov di,offset buffer1loop1:call time; 取得显示缓冲区的地址loop2:mov bh,02h ; 数码管循环显示部分lll:mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl 为要显示的数pop dimov al,0mov dx,io8255cout dx,almov bh,0mov si,offset led ; 置led 数码表偏移地址为SI add si,bx ; 求出对应的led 数码mov al,byte ptr [si]mov dx,io8255a ; 自8255A 的口输出out dx,almov al,byte ptr bz; 使相应的数码管亮mov dx,io8255cout dx,almov cx,3000delay:loop delay; 延时mov bh,byte ptr bzshr bh,1jnz lllmov dx,io8255cin al,dxtest al,80hjnz setjmp loop2set:test buffer1+1,0fhjz set1dec buffer1+1jmp loop1set1:test buffer1,0fhjz resetdec buffer1mov buffer1+1,09hjmp loop1time proc near ; 定时一秒的子程序mov dx,io8253c ; 向 8253 写控制字mov al,37h ; 使0 通道为工作方式 3 out dx,almov ax,1000h ; 循环计数初值1000 mov dx,io8253aout dx,al; 先写低字节mov al,ahout dx,al; 后写高字节mov dx,io8253cmov al,71h ; 设8253 通道 1 工作方式0out dx,almov ax,1000h ; 循环计数初值1000mov dx,io8253bout dx,al ; 先写低字节mov al,ahout dx,al; 后写高字节rettime endpcode endsend start七、实验总结:本次实验需要结合上次实验的知识,应用 8253 硬件延时,因此增加了些许难度,代码的修改也不少。

微机原理实验报告三

微机原理实验报告三

微型计算机原理与接口技术实验报告一、实验内容实验3 分支结构程序设计实验题目编程实现三分支的符号函数;编程实现将正数N 插入由正数组成的数组ARY 中。

内容提要掌握分支程序的设计,观察通用寄存器、标志寄存器的变化、监测分支点。

二、实验的源代码(.asm文件内容)第一部分——编程实现三分支的符号函数程序如下:DATAS SEGMENTX DB-3Y DB?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV AL,XCMP AL,0JGE BIGERMOV AL,0FFHMOV Y,ALJMP NEXTBIGER:JE EQULMOV AL,1MOV Y,ALJMP NEXTEQUL:MOV Y,ALNEXT: MOV AH,4CHINT 21HCODES ENDSEND START第二部分:编程实现将正数N 插入由正数组成的数组ARY中程序如下:DATAS SEGMENTX DW?ARY_HEAD DW 2,6,8,13,21,47,53,66,90ARY_END DW 125N DW 18DATAS ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATAS START: PUSH DSXOR AX,AXPUSH AXMOV AX,DATASMOV DS,AXMOV AX,NMOV ARY_HEAD-2,0FFFFHMOV SI,0 COMPARE:CMP ARY_END[SI],AXJLE INSERTMOV BX,ARY_END[SI]MOV ARY_END[SI+2],BXSUB SI,2JMP SHORT COMPARE INSERT: MOV ARY_END[SI+2],AX RETMAIN ENDPCODE ENDSEND START三、实验的(显示)结果Press any key to continue第一部分CV调试结果如下:第二部分CV调试结果如下:四、实验(调试)心得第一部分:调试中出现的问题及解决办法:本来程序中使用的返回DOS的方法是使用程序结束中断INT 20H 指令,但不能正确运行,可能是计算机也可能是软件的问题,然后又修改程序,改使用INT 21H 的4CH号功能调用,这样修改完成后程序便可以正确运行了。

微机原理实验指导书(修改1023)

微机原理实验指导书(修改1023)

微机原理实验指导书华中科技大学计算机学院武汉豪申光电新技术有限公司目录微机原理实验 (3)第一章16位汇编语言编程验 (3)实验一系统认识实验 (3)实验二分支程序设计实验 (6)实验三循环程序设计实验 (9)实验四排序程序设计实验 (12)实验五子程序设计实验 (15)微机接口实验 (19)第一节并行接口实验(8255芯片实验) (19)实验一8255并行接口实验 (19)第二节定时/计数实验(8253芯片实验) (26)实验二音乐发声器接口实验 (26)第三节串行通信接口实验(8251芯片实验) (33)实验三 RS-232标准全双工查询方式异步串行通信实验 (34)第四节A/D D/A转换器接口实验 (42)实验四查询方式A/D转换器接口实验(ADC0809) (42)实验五 D/A函数波形发生器接口实验(DAC0832) (49)微机原理实验第一章16位汇编语言编程验实验一系统认识实验⑴实验目的掌握在MF平台中汇编程序的编写、调试方法。

⑵实验内容基本实验将存储区BUF1中的内容复制到BUF2中。

⑶实验步骤(一)方式1(Debug方式)1.在MF2KP环境下输入汇编程序,编译、连接,生成.exe文件。

2.启动调试程序(Debug)。

3.在程序的退出处设置断点,利用Add Watch命令查看BUF2中的内容是否正确。

(二)方式2(人-机交互方式)1.在MF2KP环境下输入汇编程序,编译、连接、运行。

2.按提示输入数据,在屏幕显示的结果中查看BUF1,2中的内容是否正确。

3.输入不同的字符串,可得到不同的结果。

⑷实验资源配置IBMPC微机,Win2000操作系统,MF2KP微机原理实验集成开发环境。

⑸实验软件的编程◇实验流程图如图1.1.1所示将存储区BUF1中的内容复制到BUF2中的程序主功能模块如图1.1.1中的虚线框中所示。

◇实验参考程序如下所示;*--------------------------------------------------* ;* Aexp1.asm(汇编语言编程认识实验) * ;* Copyright (c) 2002 by HUST * ;* 程序调试:在EXIT处设置断点,利用Add Watch命令 * ;* 查看BUF1和BUF2的内容是否正确 * ;*-------------------------------------------------* DATA SEGMENTBUF1 DB 'MASM HELLO WORLD'COUNT EQU $-BUF1BUF2 DB20DUP(?)DATA ENDSSTACK1 SEGMENT STACKDB20DUP(?)STACK1 ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK1,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUF1 ;建立源地址指针MOV DI,OFFSET BUF2 ;建立目标地址指针MOV CX,COUNT ;字节数送入CX寄存器L1: MOV AL,[SI] ; 取源数据一个字节送入AL中MOV [DI],AL;将源数据送入目标地址单元中INC SIINC DIDEC CXJNZ L1 ;判断是否传送完毕EXIT: MOV AH,4CHINT21HCODE ENDSEND START⑹实验要求◇按要求完成实验得出正确结果.◇试着自己写出人机对话方式的汇编程序.◇完成实验报告实验二分支程序设计实验⑴实验目的掌握分支程序的结构。

微机原理实验求最大值汇编程序

微机原理实验求最大值汇编程序

实验三 求最大值程序
NEXT: LOOP MOV MOV SHR CMP JA ADD DISX MOV AND CMP JA ADD MAX1 BL,AL CL,04 AL,CL AL,09 MAX4 AL,30H AL AL,BL AL,0FH AL,09 MAX5 AL,30H MAX3:
MAX4: MAX5: CODE
MAX2:
DISX MOV INT ADD JMP ADD JMP ENDS END
AL AH,4CH 21H AL,37H MAX2 AL,37H MAX3
START
实验三 求最大值程序
七、实验报告要求(包含预习报告要求和最终报告要求)
1.实验名称: 2.实验目的 3.实验内容及要求 4.程序设计(求最大Байду номын сангаас)
实验三
六、实验程序
DISX
求最大值程序
CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,STACK MOV SS,AX MOV SP,TOP MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,09 INT 21H MOV SI,OFFSET BLOCK MOV CX,[SI] DEC CX MOV SI,OFFSET DATA1 MOV AL,[SI] MAX1: INC SI CMP AL,[SI] JA NEXT MOV AL,[SI];AL中定义为最大值
MACRO X MOV DL,X MOV AH,02 INT 21H ENDM STACK SEGMENT STA DB 512 DUP(?) TOP EQU LENGTH STA STACK ENDS DATA SEGMENT BUF DB 'MAX NUMBER:',0DH,0AH,'$' DATA1 DB 35H,07H,0ABH,56H,12H DB 98H,0CDH,76H,0FAH,0BFH BLOCK DB 10 DATA ENDS

微机原理与接口技术实验报告三

微机原理与接口技术实验报告三

微机原理与接口技术实验报告(三)1、实验目的:1)学习程序中有限的寄存器的使用。

2)学习使用冒泡法排序3)学习程序流程控制:①条件跳转指令ja jb ②call指令,观察程序执行时堆栈的变化(学会用debug –g命令设置断点)4)学习利用编译错误信息进行程序修改,通过运行寻找并改正逻辑错误。

5)灵活运用各种dos功能调用实现显示功能6)学习将数字用转换成相应的ascii码并显示2、实验内容:多重循环程序设计:多重循环中,循环中包含另一个循环,每一循环都有各自的循环计数器和终点判断。

应注意:各重循环初始条件的控制;内循环可以嵌套在外循环中,也可以几个内循环并列在外循环中,但各层循环之间不能交叉,内循环可以跳到外循环中,不可以从外循环直接跳进内层循环;应用:冒泡排序法以Buffer为首地址保存一组(假设10个)无序的有符号数,编写排序程序使数由小到大重新排列。

程序框图如下:举例:(值1 2 3 4,数值越大气泡越大)原顺序:第一次交换第一次内循环结束(外循环1) 第二次内循环结束(外循环2)3、试验结果程序编写如下:dispmsg macro messgemov ah,9lea dx,messgeint 21hendm.model small.dataBuffer db 10,-30,52,2,42db 92,32,-36,31,63N equ $-bufferjieshu db '$'newlines db 0dh,0ahjieguo db ' the result is:',0dh,0ah jguo db 30 dup(?,?),'$'.stack 100.codemov ax,@datamov ds,axmov ax,@stackmov ss,axmov bx,offset buffermov cx,N-1lop1:mov dx,cxlop2:mov al,[bx]cmp al,[bx+1]jle bijiaoxiayigexchg al,[bx+1]mov [bx],aljixu:inc bxbijiaoxiayige:inc bxloop lop2mov cx,dxmov bx,offset bufferloop lop1xianshi: mov si,offset buffer mov di,offset jguoxiayige:mov al,[si]cmp al,'$'jz wanbimov ch,almov cl,4shr al,clcall dispmov al,chand al,0fhcall dispinc sijmp xiayigewanbi:dispmsg jieguo Mov ax,4c00HInt 21Hdisp proccmp al,0ahjs doneadd al,7done:add al,30h mov [di],alinc diretdisp endpEndend start该程序中,首先定义一个宏dispmsg,然后定义各段。

微机原理实验

微机原理实验

微机原理实验一、实验目的。

本实验旨在通过实际操作,加深对微机原理的理解,掌握微机原理的实验技能,提高实际动手能力。

二、实验仪器与设备。

1. PC机一台。

2. 数字示波器一台。

3. 信号发生器一台。

4. 示波器探头若干。

三、实验原理。

微机原理实验是通过对微机原理相关知识的实际操作,来加深对微机原理的理解。

包括微处理器的工作原理、总线的结构和工作原理、存储器的结构和工作原理等内容。

四、实验内容。

1. 实验一,微处理器的工作原理。

通过实际操作,观察微处理器在不同工作状态下的运行情况,了解微处理器的工作原理及其内部结构。

2. 实验二,总线的结构和工作原理。

利用数字示波器和信号发生器,对总线进行测试,观察总线的工作情况,了解总线的结构和工作原理。

3. 实验三,存储器的结构和工作原理。

通过对存储器进行读写操作,观察存储器的存取过程,了解存储器的结构和工作原理。

五、实验步骤。

1. 实验一,微处理器的工作原理。

(1)将微处理器插入主板插槽,并连接电源。

(2)通过示波器观察微处理器在不同工作状态下的波形变化。

(3)记录观察结果并进行分析。

2. 实验二,总线的结构和工作原理。

(1)连接信号发生器和示波器到总线上。

(2)调节信号发生器的频率和幅度,观察示波器上的波形变化。

(3)记录观察结果并进行分析。

3. 实验三,存储器的结构和工作原理。

(1)利用存储器进行读写操作,观察存储器的存取过程。

(2)记录观察结果并进行分析。

六、实验结果与分析。

通过实验操作,得出了微处理器的工作原理、总线的结构和工作原理、存储器的结构和工作原理等方面的实验结果,并进行了相应的分析。

七、实验总结。

通过本次实验,加深了对微机原理相关知识的理解,掌握了微机原理的实验技能,提高了实际动手能力,为今后的学习和工作打下了良好的基础。

八、实验心得。

通过本次实验,我深刻体会到了实际操作的重要性,只有亲自动手去做,才能真正理解和掌握微机原理相关知识。

同时,也感受到了微机原理实验的乐趣,希望通过不断地实验操作,能够进一步提高自己的实验技能和动手能力。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验目的,通过本次实验,掌握微机原理的基本知识,了解微机系统的组成和工作原理,掌握微机系统的组装和调试方法。

实验一,微机系统组成及工作原理。

1.1 微机系统的组成。

微机系统由中央处理器(CPU)、内存、输入设备、输出设备和外部设备等组成。

其中,CPU是微机系统的核心部件,负责控制整个系统的运行。

1.2 微机系统的工作原理。

微机系统的工作原理是通过CPU对内存中的指令进行解释和执行,从而实现各种功能。

CPU通过总线与内存、输入输出设备进行数据传输和控制信号的交换,实现对整个系统的控制和管理。

实验二,微机系统的组装和调试。

2.1 微机系统的组装。

在组装微机系统时,首先要选择合适的主板、CPU、内存、硬盘等配件,然后按照正确的安装顺序和方法进行组装。

组装完成后,还需连接电源、显示器、键盘、鼠标等外部设备。

2.2 微机系统的调试。

组装完成后,需要对微机系统进行调试,检查各个部件是否连接正确,是否能够正常工作。

通过BIOS设置和操作系统的安装,完成对微机系统的调试和配置。

实验三,微机系统的应用。

3.1 微机系统的应用领域。

微机系统广泛应用于各个领域,如办公、教育、科研、娱乐等。

在办公领域,微机系统可以用于文字处理、表格制作、图像处理等;在教育领域,微机系统可以用于多媒体教学、网络教学等。

3.2 微机系统的发展趋势。

随着科技的不断发展,微机系统也在不断更新换代,性能不断提升,体积不断缩小,功耗不断降低。

未来,微机系统将更加智能化、便携化,成为人们生活、工作不可或缺的一部分。

结论,通过本次实验,我对微机原理有了更深入的了解,掌握了微机系统的组成和工作原理,了解了微机系统的组装和调试方法,对微机系统的应用和发展趋势也有了一定的认识。

这对我今后的学习和工作将有很大的帮助。

微机原理实验 原理

微机原理实验 原理

微机原理实验原理
实验1:微机原理实验的实验目的
实验2:微机原理实验的仪器和材料
实验3:微机原理实验的实验步骤
实验4:微机原理实验的实验结果与分析
实验5:微机原理实验的实验结论
实验1:实验目的
本实验旨在通过使用微机原理实验仪器和材料,了解微机原理的基本原理和工作方式。

实验2:仪器和材料
本实验所需的仪器和材料包括微机原理实验仪器、计算机、电源线、串口通信线、示波器等。

实验3:实验步骤
1. 将微机原理实验仪器与计算机连接,确保连接稳定。

2. 打开电源线,将微机原理实验仪器通电。

3. 配置串口通信线,确保仪器与计算机之间的串口通信正常。

4. 在计算机上开启相关的软件程序,进行实验参数的设置与调整。

5. 根据实验要求,进行数据采集、数据处理以及实验结果的观察与记录。

6. 分析实验结果,根据实验目的得出相应的结论。

实验4:实验结果与分析
根据实验数据的采集和处理,我们得到了实验结果。

经过对实
验结果的分析和比较,可以得出以下结论:
- 实验结果符合预期,验证了微机原理的基本原理和工作方式。

- 实验过程中出现了一些异常情况,为了更好地理解这些异常
状况,需要进一步分析和研究。

实验5:实验结论
通过本次微机原理实验,我们深入了解了微机原理的基本原理和工作方式。

我们可以得出以下结论:
- 微机原理是计算机科学中的基础课程,对于理解和掌握计算
机系统的工作原理至关重要。

- 通过实验,我们可以进一步深入理解微机原理,为今后的学
习和科研工作奠定基础。

微机原理实验报告3

微机原理实验报告3

微机原理实验报告实验三七段数码管显示一、实验目的掌握接口芯片的编址方法,掌握8255的初始化设置,及数码管显示原理,掌握段控及位控的概念。

二、实验内容连接地址译码器与8255的连线及8255与数码管的连线;在数据段中存放0到9的字形码;从微机键盘输入2个数字的ASCII码,在输入过程中检查如非数字键则重新输入;然后将输入的ASCII码变成相应的数字,再利用换码指令XLAT查表得到相应的字形码;将字形码送到8255输出口所接的数码管上显示。

三、实验原理图四、实验流程图定义堆栈段、数据段定义代码段,写主函数返回DOS开始输入1号数字并转换成BCD 码存入输入2号数字并转换成BCD 码存入找到1号数字对应的字符并转换输出找到2号数字对应的字符并转换输出是否有按键按下INT21H 6号功能YN五、实验结论数码管能正确显示数字,调节DELAY 函数中数值可以调整延迟时间,得到不同显示效果。

六、实验心得学习使用XLAT ,同时可以不使用此方法,利用偏移地址的方法转换字符。

学习使用了INT 21H 6号功能,判断按键是否按下。

学习使用了实验箱及正确的连线。

学习分辨简易非简易连线方法。

附录:程序清单INPORT_1 EQU 0EF00H-280H+28BHINPORT_A EQU 0EF00H-280H+288HINPORT_C EQU 0EF00H-280H+28AHSTACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTTABL DB 3FH,06H,5BH,4FH,6BH,6DH,7DH,07H,7FH,6FH DIGIT DB 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROCMOV AX,DATAMOV DS,AXLEA BX,DIGITCALL KEYINAND AL,0FHMOV [BX],ALINC BXCALL KEYINAND AL,0FHMOV [BX],ALMOV DX,INPORT_1MOV AL,10001010BOUT DX,ALDISP: MOV DX,INPORT_ALEA BX,DIGITMOV AL,[BX]LEA BX,TABLEXLAT TABLEOUT DX,ALMOV DX,INPORT_CMOV AL,10BOUT DX,ALCALL DELAYINC BXMOV DX,INPORT_ALEA BX,DIGITMOV AL,[BX]LEA BX,TABLXLAT TABLOUT DX,ALMOV DX,INPORT_CMOV AL,01BOUT DX,ALCALL DELAYMOV AH,6MOV DL,0FFHINT 21HJZ DISPMOV AX,4C00HINT 21H MAIN ENDPKEYIN PROC INPUT: MOV AH,8INT 21HCMP AL,30HJB INPUTCMP AL,39HJA INPUTMOV DL,ALMOV AH,2INT 21HRETKEYIN ENDPDELAY PROCPUSH DIPUSH CXMOV DI,0FFFHMOV CX,0 NEXT1: LOOP NEXT1DEC DIJNZ NEXT1POP CXPOP DIRETDELAY ENDPCODE ENDSEND MAIN。

微机原理第三次实验报告

微机原理第三次实验报告

实验三串口通信实验一、实验目的与要求利用开发板的串口仿真功能,掌握串口通信的编程方法。

实验要求:(1)利用串行口向PC机发送字符“0x55”,利用串口调试软件在计算机端观察接收到的数据是否与预期一致。

(2)利用串行口向PC机发送字符串,利用串口调试软件在计算机端观察接收到的数据是否与预期一致(3)观察分析参考程序3,利用开发板接收PC机发送过来的16进制数据并用数码管显示。

(4)掌握实验基础内容后根据参考源程序进行修改和拓展,自行设计程序目标并编程验证,比如修改发送程序的内容,实现由上位机控制数码管显示内容等。

二、实验注意事项1、启动KEIL软件,选择菜单“工程\新建工程”以建立工程(扩展名为.uv2,如T2a.uv2)。

2、选择菜单“文件\新文件”以建立一个新的文本编辑窗口,在窗口中输入参考源程序1并保存(扩展名为.asm),如test2a.asm,然后将其加入到源程序组1中。

3、在工程菜单的选项“目标1属性”中设置相应的选项,包括“输出\产生hex 文件”选项以便汇编生成HEX代码供编程器使用,在“调试\使用KeilMonitor-51 Driver”的设置中选择相应的串口号。

4、使用“工程”中的“编译全部文件”完成相应的文件编译,如果程序格式正确将生成相应HEX代码文件,如T2a.hex。

如果提示有编译错误请自行修改源程序然后再重新编译。

5、用单根连线将P1.0(JP44)连接到8路指示灯部分(JP32)的LED0,将P1.6、P1.7(JP44)分别连接到JP37的K01、K02。

6、完成仿真器与计算机之间的连线并通电。

7、在KEIL软件中启动“调试\开启仿真模式”,然后用“运行”命令实现全速运行的仿真。

8、观察实验现象并分别依次按下K01、K02,观察并记录实验现象然后在KEIL 软件中启动“中断运行-调试(debug)\关闭仿真模式”退出仿真,选择“工程\关闭工程”可关闭当前工程。

9、参考步骤1-4完成参考源程序2的建立与输入,如新项目T2b.uv2和新的源程序test2b.asm,完成编译与仿真设置。

《微机原理实验报告》word版

《微机原理实验报告》word版

班级自动化学号姓名实验一系统认识实验一实验目的掌握教学系统的基本操作二实验设备PC机一台masm软件三实验内容及步骤(1)输入程序并检查无误,经汇编连接后装入系统(2)输入E3500后回车,在3500-3510单元中分别送入00~09十个数据(3)按“T“键运行以上程序直至程序运行完(4)输入D3600后回车,查看3600单元后面的数据四程序及其显示的结果(1)程序(2)显示的结果实验三运算类编程实验一实验目的(1)掌握使用运算类指令编程及调试方法(2)掌握运算类指令对各状态标志位的影响及其测试方法二实验设备PC一台masm软件三实验内容及步骤(1)二进制双精度加法运算(2)输入程序并检查无误,经汇编连接后装入系统(3)用U0000:2000查看MOV AX,DA TA的语句,即得到数据段段位置CS:1412用E命令E1412:0000回车,给XL,YL,YH赋值存入二进制数A0,65,15,00和9E,B7,21,00(4)用G=0000:2000,运行以上程序(5)输入D1412:0008,检验显示的结果是否为:3E,1D,17,00四实验程序五程序显示的结果实验四分支程序设计实验一实验目的:(1)掌握分支程序的结构(2)掌握分支程序的设计,调试方法二实验设备:PC机一台masm软件三实验内容设计一数据块间的搬移程序。

设计思想:程序要求把内存中一数据区传送到另一存储区。

源数据块和目的数据块在存储中可能有三种情况,对于两个分离的情况,数据的传送从数据块的首位置开始,或者从数据块的末位置开始。

但对于有部分重叠的情况,则要加以分析,否则重叠部分会因搬移而遭到破坏,可以得到以下结论:(1)当源数据块首址大于目的块首址时,从数据块首址开始传送数据。

(2)当源数据块首址小于目的块首址时,从数据块末址开始传送数据。

四实验步骤(1)按实验流程图设计编写实验程序(2)输入程序并检查无误后,经汇编,连接后装入系统(3)用E命令在以SI为起址的单元中填入十六个数(4)用G=0000:2000运行实验程序(5)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同五实验程序及结果显示(1)实验程序(1)实验结果显示实验五循环程序设计一实验目的(1)加深对循环结构的理解(2)掌握循环结构程序设计的方法(3)熟练掌握调试循环程序的方法二实验设备:PC机一台masm软件三实验内容求数据区内负数的个数:设数据区的第一单元存放区内单元数据的个数,从第二单元开始开始存放数据,在区内最后一个单元存放结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

五、上机步骤
1、编辑源程序
EDIT shiyan3.ASM
2、汇编
MASM shiyan3.ASM
3、连接并生成可执行文件 LINK shiyan3.OBJ
4、运行并调试
调试:DEBUG shiyan3.EXE
运行:shiyan3.EXE
结果:屏幕上显示,"输入一串字符:"的汉语拼音“shuruyichuanzifu:”
输入了一串字符后,屏幕上将大写字母数目、小写字母数目、数字数目以
及其它数目显示出来。

六、结果分析
该程序综合运用分支、循环及子程序设计,主要包括汇编程序结构、字符串的输出输入、分类统计(循环内有分支)码元转换、数值显示等,使实现从键盘接收一串不多于99个字符的字符串,对其进行分类统计,显示其中数字字符个数、大写英文字母个数、小写英文字母个数、其它字符个数的功能。

我们可以将子程序单独编写成一个源程序文件,经过汇编之后形成目标文件,这就是子程序模块。

进行连接的目标模块文件可以用汇编程序产生,也可以用其他编译程序产生。

所以,利用这种方法还可以实现汇编语言程序模块和高级语言程序模块的连接,实现汇编语言和高级语言的连接,即实现汇编语言和高级语言的混合编程。

七、源程序清单与注释
DATA SEGMENT
MSG DB 0DH,0AH,"输入一串字符:$"
MSG1 DB 0DH,0AH,"大写字母数目:$"
MSG2 DB 0DH,0AH,"小写字母数目:$"
MSG3 DB 0DH,0AH,"数字数目:$"
MSG4 DB 0DH,0AH,"其它数目:$"
BUF DB 99 ;键盘接收缓冲区
DB 0
DB 99 DUP (?)
BIG DB 0 ;大写字母个数
LITTLE DB 0 ;小写字母个数
DIG DB 0 ;数字符号个数
OTHER DB 0 ;其他符号个数
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MSG
MOV AH,9 ;9号功能调用显示提醒信息
INT 21H
LEA DX,BUF
MOV AH,10 ;10号功能调用从键盘接收一串字符
INT 21H
MOV CL,BUF+1 ;实际从键盘接收字符个数
XOR CH,CH
JCXZ DISP ;未接收信息则显示全0
LEA SI,BUF+2 ;SI指向接收的串首AGAIN: CMP BYTE PTR [SI],30H ;分类统计
JB OTHERS
CMP BYTE PTR [SI],39H
JBE DIGITALS
CMP BYTE PTR [SI],41H
JB OTHERS
CMP BYTE PTR [SI],5AH
JBE BIGS
CMP BYTE PTR [SI],61H
JB OTHERS
CMP BYTE PTR [SI],7AH
JBE LITTLES
OTHERS: INC OTHER
JMP OK
DIGITALS: INC DIG
JMP OK
LITTLES: INC LITTLE
JMP OK
BIGS: INC BIG
OK: INC SI
LOOP AGAIN
DISP:LEA DX,MSG1 ;显示结果
MOV BH,BIG
CALL DISPDEC
LEA DX,MSG2
MOV BH,LITTLE
CALL DISPDEC
LEA DX,MSG3
MOV BH,DIG
CALL DISPDEC
LEA DX,MSG4
MOV BH,OTHER
CALL DISPDEC
MOV AH,4CH
INT 21H
;入口参数:DX为待显示数据说明的首地址,BH为待显示的小于100的数据DISPDEC PROC NEAR
MOV AH,9
INT 21H
MOV AL,BH
XOR AH,AH
AAM ;分离十位及个位
MOV DL,AH
MOV DH,AL
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,DH
ADD DL,30H
MOV AH,2
INT 21H
RET
DISPDEC ENDP
CODE ENDS
END START。

相关文档
最新文档