当前位置:文档之家› 微机原理与接口技术实验讲义

微机原理与接口技术实验讲义

实验一熟悉汇编语言环境及建立汇编的过程一、实验目的1.熟悉汇编语言环境。

2.掌握汇编语言的上机过程。

3.了解汇编语言程序的编程格式。

二、实验要求通过一个小程序的编写达到以上的实验目的。

三、实验原理1.汇编语言程序的上机过程用汇编语言编写的程序称为源程序,源程序也不能由机器直接执行,而必须翻译成机器代码组成的目标程序,这个翻译过程称为汇编。

在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的,用来把汇编语言编写的程序自动翻译成目标的软件叫汇编程序,汇编过程如下:四、实验步骤1、打开编辑环境2、输入程序CODE SEGMENTASSUME CS:CODESTART: MOV AL,01HMOV BL,40HADD AL,BLMOV DL,ALMOV AH,02HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START3、保存源程序,以.ASM为扩展名。

C:\MASM\1.ASM4、建立汇编过程(1)用宏汇编程序汇编源程序C:\MASM>MASM 1.ASM汇编程序有3个输出文件【.obj】文件,【.LST】文件,【.CRF】文件,.OBJ文件是我们所需要的文件。

汇编程序还有另外一个重要功能:可以给出源程序中的错误信息。

(2)用连接程序将OBJ文件转换为可执行的EXE文件C:\MASM>LINK 1.OBJ5、执行程序:C:\MASM>1.EXE实验二两个多位十进制数相加的实验一、实验目的:1.学习数据传送和算术运算指令的用法。

2.熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程。

二、实验内容:将两个多位十进制数相加。

要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图四、实验原理1.ADC 带进位相加指令的功能和指令格式2.AAA 、DAA、 AAS、 DAS指令的功能和指令格式3.伪指令SEGMENT 、ENDS、 ASSUME、MACRO、ENDM的使用4.子程序的定义(PROC NEAR/FAR ENDP),以及子程序调用和返回指令:CALL、RET的使用5.循环指令LOOP的格式以及退出循环的条件6.中断指令的使用五、实验参考程序CRLF MACRO ;建立回车换行宏MOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HENDMDATA SEGMENT ;数据段DATA1 DB 33H,39H,31H,37H,34H ;第一个数据(作为加数)DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为被加数)DATA ENDSCODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,OFFSET DATA2MOV BX,05CALL DISPL ;显示被加数CRLFMOV SI,OFFSET DATA1MOV BX,05CALL DISPL ;显示加数CRLFMOV DI,OFFSET DATA2CALL ADDA ;加法运算MOV SI,OFFSET DATA1MOV BX,05CALL DISPL ;显示结果CRLFMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子程序段DS1: MOV AH,02HMOV DL,[SI+BX-1] ;显示字符串中的一个字符INT 21HDEC BX ;修改偏移量JNZ DS1RETDISPL ENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05AD1: SUB BYTE PTR[SI+BX-1],30H ;将ASCII码表示的数字串SUB BYTE PTR[DI+BX-1],30H ;转化位十六进制的字符串 DEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05 ;包括进位位共5位CLC ;清进位位AD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BL ;带进位相加AAA ;非组合BCD码的加法调整 MOV [SI],AL ;结果送加数区INC SIINC DI ;指向下一位LOOP AD2 ;循环MOV SI,DXMOV DI,BPMOV BX,05AD3: ADD BYTE PTR[SI+BX-1],30H ;十六进制的数字串转化ADD BYTE PTR[DI+BX-1],30H ;为ASCII码表示的数字串 DEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START六、实验步骤1.按实验要求编写程序2.汇编连接程序生成可执行文件3. 执行程序观察结果七、拓展练习编写程序完成两个多位十进制数相减。

要求显示结果格式为:被减数减数相减结果实验三字符串匹配程序一、实验目的:掌握显示提示信息的方法及接收键盘输入信息的方法。

二、实验内容:编写程序,实现两个字符串的比较。

如相同,则显示“MATCH”,否则,显示”NO MATCH”。

三、程序框图Array四、实验原理1、DB、 DUP、 EQU等伪指令的功能以及使用格式2、INT 21H 的09H子功能的功能、工作情况以及使用格式3、INT 21H的0AH子功能的功能、工作情况以及使用格式4、串扫描指令SCASB的功能以及使用格式5、入栈、出栈指令PUSH 、POP的使用情况五、实验参考程序CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATA SEGMENTMESS1 DB 'MATCH',0DH,0AH,'$'MESS2 DB 'NO MATCH',0DH,0AH,'$'MESS3 DB 'INPUT STRING1:',0DH,0AH,'$'MESS4 DB 'INPUT STRING2:',0DH,0AH,'$'MAXLEN1 DB 81ACTLEN1 DB ?STRING1 DB 81 DUP(?)MAXLEN2 DB 81ACTLEN2 DB ?STRING2 DB 81 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,DATAMOV ES,AXMOV AX,STACKMOV SS,AXMOV SP,TOP ;段寄存器及堆栈初始化MOV AH,09HMOV DX,OFFSET MESS3INT 21H ;显示输入提示1MOV AH,0AHMOV DX,OFFSET MAXLEN1INT 21H ;接收键入的字符串1CRLF ;回车换行MOV AH,09HMOV DX,OFFSET MESS4INT 21H ;显示输入提示2MOV AH,0AHMOV DX,OFFSET MAXLEN2INT 21H ;接收键入的字符串2CRLFCLDMOV SI,OFFSET STRING1MOV CL,[SI-1]MOV CH,00H ;字符串1的实际字符数送CXKKK: MOV DI,OFFSET STRING2PUSH CXMOV CL,[DI-1]MOV CH,00H ;字符串2的实际字符数送CX MOV AL,[SI]MOV DX,DIREPNZ SCASB ;将串1中的一个字符和串2中的所有字符作比较 JZ GGG ;比较相等转GGGINC SI ;从串1中取下一个字符POP CXLOOP KKKMOV AH,09HMOV DX,OFFSET MESS2INT 21H ;显示‘NO MATCH'JMP PPPGGG: MOV AH,09HMOV DX,OFFSET MESS1INT 21H ;显示'MATCH'PPP: MOV AX,4C00HINT 21H ;返回DOSCODE ENDSEND START六实验步骤1.按实验要求编写程序2.汇编连接程序生成可执行文件3.执行程序观察结果七、拓展练习编写程序,实现两个字符串的比较。

如字符长度相同并且对应字符顺序相同,则显示“MATCH”,否则,显示“NO MATCH”。

实验四字符和数据的显示程序一、实验目的掌握字符和数据的显示方法。

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

如为非数字字符即非“0——9”,则计数器加1,并显示字符。

如为数字,则直接显示,但不计数。

三、程序框图四、实验原理1.程序跳转指令JMP的功能及用法2.比较指令CMP 、JB、 JBE等指令的功能及用法3.循环移位指令ROL的用法及功能4.逻辑指令AND的功能及用法五、实验参考程序CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATA SEGMENTMESS1 DB ‘INPUT STRING,THE END FLAG IS $’MESS2 DB ‘NON-DIGITAL CHAR COUNT=$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AX ;初始化MOV BX,0000H ;计数值清0MOV AH,09HMOV DX,OFFSET MESS1INT 21HMOV AH,02HMOV DL,‘$’INT 21H ;显示提示信息CRLFXXX: MOV AH,01HINT 21H ;接收键入字符CMP AH,‘$’JZ UUU ;是‘$’字符则转UUUCMP AL,0DHJNZ IIICRLF ;是回车则回车换行JMP VVVIII: CMP AL,30HJB YYYCMP AL,39HJBE VVV ;非‘0’——‘9’转YYY YYY: INC BX ;计数值加1VVV: JMP XXXUUU: CRLFMOV AH,09HMOV DX,OFFSET MESS2INT 21H ;显示表头MOV AX,BXCALL DISP ;显示结果MOV AH,02HMOV DL,‘H’INT 21H ;十六进制数标志MOV AH,4CHINT 21HDISPP PROC NEAR ;显示子程序,按十六进制数方式显示AL中的数 MOV BL,AL ;AL中数送BLKKK: MOV DL,BLMOV CL,04ROL DL,CLAND DL,0FHCALL DISPL ;显示字节高位MOV DL,BLAND DL,0FHCALL DISPL ;显示字节低位RETDISPP ENDPDISPL PROC NEARADD DL,30H ;将数值转为对应的ASCII码CMP DL,3AHJB DDD ;是‘0’——‘9’转DDDADD DL,27H ;是‘A’——‘F’DDD: MOV AH,02HINT 21H ;显示DL中字符RETDISPL ENDPDISP PROC NEAR ;显示子程序,按十六进制数方式显示AX中的数 PUSH AX ;入栈保存MOV AL,AHCALL DISPP ;显示高字节POP AXCALL DISPP ;显示低字节RETDISP ENDPCODE ENDSEND START六、实验步骤1.按实验要求编写程序2.汇编连接程序生成可执行文件3.执行程序观察结果七、拓展练习编写程序,先显示信息“INPUT STRING ,THE END FLAG IS $”,再接收字符。

相关主题