当前位置:文档之家› 微机原理实验报告

微机原理实验报告

微机原理实验报告班级:指导老师:学号:姓名:实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图图3-1四、参考程序清单DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验结果与分析这次实验依次将相加数与被加数存入AL,BL,依次从低位向高位相加,然后把结果放在内存中。

六、实验体会这次实验是微机原理课的第一次实验,主要是为了通过这次的实验,让我们对这个软件的编程有更深的了解、知道如何运行程序。

在实验中误把C00H ,写成了COOH.从中,我学到了许多课本里学不到的东西,有些意外,有些收获。

实验二排序实验一、实验目的掌握用汇编语言编写排序程序的思路和方法。

二、实验内容将指定内存出开始的数据(最多为4位数)按从大到小的顺序排列。

第一个数字表示数据的个数(不是要比较的数值!!!)。

三、程序流程图图3-2四、程序清单DATA SEGMENTADDR DW 8,234,35,67,876,54,39,765,237 DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV SP,TOPMOV CX,WORD PTR ADDR[0]DEC CXLOOP1: MOV DI,CXMOV BX,2LOOP2: MOV AX,WORD PTR ADDR[BX]CMP AX,WORD PTR ADDR[BX+2]JGE CCCXCHG AX,WORD PTR ADDR[BX+2]MOV WORD PTR ADDR[BX],AX CCC: ADD BX,2LOOP LOOP2MOV CX,DILOOP LOOP1EXIT: MOV AX,4C00HINT 21HCODE ENDSEND START五、实验结果与分析这次实验是给我们8个数字,按从大到小的顺序排列出来,定义的数字中8是一个指示数字的个数量。

六、实验体会通过此次的实验,懂得了用汇编语言编写排序程序的思路和方法,知道义的数字中8是一个指示数字的个数量,不是一个数。

更加加强了我对程序的操作的熟练程度。

实验三字符串按ASCII值的查找一、实验目的1.掌握字符串按ASCII值查找的方法。

二、实验设备计算机一台。

预装Windows XP、宏汇编MASM5。

三、实验内容编写能够实现以下要求的汇编语言程序,并上机实现。

1.对一个给定的字符串,统计其中0~9的个数,并在屏幕上显示这个字符串和0~9的个数(3位十进制数)。

四、实验框图程序开始DB定义一个字符串将字符串的长度转换成十进制符串按ASCII值查找、执行结束五、程序清单DATA SEGMENTSTRING DB ' GFDsfgfdsGDA0935J/:@[]`{}KO6ASD78','$' L1 DB ?DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START PROC FARBEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLEA BX,STRINGMOV DL,0LP2: MOV AL,[BX]CMP AL,30HJB LP3CMP AL,39HJA LP3INC DLLP3: CMP AL,'$'JE LP4INC BXJMP LP2LP4: MOV L1,DLLEA DX,STRINGMOV AH,9INT 21HMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HMOV AH,0CALL B_DRETSTART ENDPB_D PROC ;二——十进制转换及显示MOV CL,100DIV CLPUSH AXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXMOV AL,AHMOV AH,0MOV CL,10DIV CLPUSH AXADD DL,30HMOV AH,2INT 21HPOP AXMOV DL,AHADD DL,30HMOV AH,2INT 21HRETB_D ENDPCODE ENDSEND BEGIN六、实验结果与分析大写的英文字符A~Z的ASCII码是41H~5AH,小写的英文字符a~z的ASCII码是61H~7AH,如果一个字符的ASCII码在这两个范围内,则满足要求。

七、实验体会通过此次的实验更加加强了我对ASCII码转换的应用,以后可以对这个问题,有更深的了解,而且我能很快的用它进行查找,很有收获。

实验四 DOS输入输出功能的使用一、实验目的1.掌握8086汇编语言程序的汇编、链接、运行的方法。

2.掌握用软中断调用DOS输入输出功能的方法。

3.掌握将二进制数转换成十进制数的编程方法。

二、实验设备计算机一台。

预装Windows XP、宏汇编MASM5。

三、实验内容程序开始DB定义一个字符串将字符串的长度转换成十进制MOV DL,字符ASCII码“$”结束四、程序清单DATA SEGMENTSTRING1 DB '1234567890ABCDEFG','$' ;准备显示的字符串COUNT DB $-STRING1-1 ;上面字符串的长度DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(100)STACK ENDSCODE SEGMENTSTART PROC FARASSUME CS:CODE, SS:STACK,DS:DATA BEGIN: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLEA DX,STRING1 ;输出字符串MOV AH,9INT 21H;输出回车和换行符,以实现另起一行MOV DL,0DH ;输出回车命令MOV AH,2INT 21HMOV DL,0AH ;输出换行命令MOV AH,2INT 21HMOV AL,COUNT ;将字符串长度转换成3位十进制数输出MOV AH,0 ;高8位补0MOV CL,100DIV CL ;除以100获得百位数PUSH AX ;暂存结果和余数MOV DL,ALADD DL,30H ;换成ASCII码MOV AH,2 ;输出字符到屏幕INT 21HPOP AX ;恢复结果和余数MOV AL,AH ;余数作为被除数MOV AH,0MOV CL,10DIV CL ;除以10获得十位数PUSH AXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXMOV DL,AHADD DL,30HMOV AH,2INT 21HMOV DL,0DH ;输出回车命令MOV AH,2INT 21HMOV DL,0AH ;输出换行命令MOV AH,2INT 21HRETSTART ENDPCODE ENDSEND 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接系统数据线区的任一插座。

相关主题