微机原理 字符匹配程序实验报告
微机原理实验2程序字符串匹配实验
8086汇编语言程序实验:实验二、字符串匹配实验题目:1、(必做题)编程实现:从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NO MATCH”。
2、(选做题)编程实现:从键盘分别输入两个字符串,然后进行比较,若两个字符串的长度和对应字符都完全相同,则显示“MATCH”,否则显示“NO MATCH”。
对应程序如下所示:;第1题;====================================HUICHE MACRO ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。
MOV DL,0DH ;用2号功能“显示”回车。
MOV AH,02HINT 21HMOV DL,0AH ;用2号功能“显示”换行。
MOV AH,02HINT 21HENDMDA TA SEGMENTMESSAGE1 DB 'MATCH','$' ;定义“MATCH”提示信息,“$”作为调用9号功能的结束符。
MESSAGE2 DB 'NO MATCH','$' ;定义“NO MA TCH”提示信息。
TISHI1 DB 'Please input the first string:','$' ;提示输入第1个字符串的提示信息。
TISHI2 DB 'Please input the second string:','$' ;提示输入第1个字符串的提示信息。
STRING1 DB 100 ; 100为存第一个字符串的最大可用空间的字节数。
DB ? ;预留字节,存储将要输入的第1个字符串的实际长度。
DB 100 DUP(?) ;预留100个字节空间,用于存放第1个字符串。
STRING2 DB 100DB ?DB 100 DUP(?)DA TA ENDSSTACK SEGMENT ;定义一个50字节大小的堆栈段空间。
西电微机原理实验报告
微机系统实验报告班级: 031214 学号: 03121370 姓名:孔玲玲地点: E-II-312 时间:第二批实验一汇编语言编程实验一、实验目的(1)掌握汇编语言的编程方法(2)掌握DOS功能调用的使用方法(3)掌握汇编语言程序的调试运行过程二、实验设备PC机一台。
三、实验内容(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。
(2) 在屏幕上显示自己的学号姓名信息。
(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入“Q”或“q”时结束。
(4)自主设计输入显示信息,完成编程与调试,演示实验结果。
考核方式:完成实验内容(1)(2)(3)通过,完成实验内容(4)优秀。
实验中使用的DOS功能调用: INT 21H表3-1-1 显示实验中可使用DOS功能调用AH 值功能调用参数结果1 键盘输入并回显AL=输出字符2 显示单个字符(带Ctrl+Break检查) DL=输出字符光标在字符后面6 显示单个字符(无Ctrl+Break检查) DL=输出字符光标在字符后面8 从键盘上读一个字符AL=字符的ASCII码9 显示字符串DS:DX=串地址,‘$’为结束字符光标跟在串后面4CH 返回DOS系统AL=返回码四、实验步骤(1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。
(2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。
(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。
按F9连续运行。
(4)更改数据区的数据,考察程序的正确性。
五、实验程序DATA SEGMENTBUFFER DB '03121370konglingling:',0AH,0DH,'$'BUFFER2 DB 'aAbBcC','$'BUFFER3 DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXmov ah,09hmov DX,OFFSET BUFFERint 21hMOV SI,OFFSET BUFFER2lab1:cmp BYTE PTR [SI],'$'je lab2MOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21Hadd SI,1jmp lab1lab2:mov ah,09hmov DX,OFFSET BUFFER3int 21hmov ah,01hint 21hcmp al,'q'je lab3mov BL,ALAND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C4ADD AL,07HC4: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,BLAND AL,0FH ;取低4位CMP AL,0AHJB C5ADD AL,07HC5: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21Hjmp lab2lab3:mov ah,4chint 21hCODE ENDSend START六、实验结果实验二数码转换实验一、实验目的(1)掌握不同进制数及编码相互转换的程序设计方法。
微机原理综合实验报告
滨江学院微机原理综合实验实验报告学生姓名学号专业信息工程班级2016级二O一八年十二月三十日微机原理综合实验实验一利用DEBUG调试程序调试程序段1、实验目的1)熟悉DEBUG有关命令的使用方法。
2)利用DEBUG掌握有关指令的功能。
3)利用DEBUG运行简单的程序段。
2、实验内容1)进入和退出DEBUG程序。
2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。
对于U命令、N命令、W命令等,也应试一下。
3)利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
3、实验准备1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。
2)作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。
3)阅读将AX左移9位的程序段。
4、实验步骤1)在DOS提示符下,进入DEBUG程序。
2)在DOS目录下启动DEBUG。
3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。
5、实验报告要求1)如何启动和退出DEBUG程序。
2)整理每个DEBUG命令使用的方法,实际示例及执行结果。
3)启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?实验结果:实验二分支程序实验1、实验目的1)掌握分支程序的设计方法。
2)掌握利用DEBUG修改参数、检查结果的方法。
3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。
2、实验内容1)编写一个程序,显示AL寄存器中的两位十六进制数2)编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
3、实验准备1)编写实验内容要求的两个程序。
2)写出调试以上程序,即修改程序参数,检查结果的操作方法。
3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。
微机原理实验报告(江苏大学)
微机原理课程设计报告专业:学号:姓名:一:课程设计目的结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对微型计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。
学会使用命令调用DOS观察程序运行结果,学会使用汇编语言编写程序,弄懂汇编程序的执行过程,弄懂汇编程序的上机过程以及如何运用MASM软件进行汇编程序的调试。
二:设计内容1.字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法,编写程序实现两个字符串比较,如相同则显示“MATCH”,否则显示“NO MATCH”。
详细源程序如下:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATA SEGMENTS1 DB'MATCH',0DH,0AH,'$'S2 DB'NO MATCH',0DH,0AH,'$'S3 DB'INPUT STRING1:',0DH,0AH,'$'S4 DB'INPUT STRING2:',0DH,0AH,'$'MAXLEN1 DB 81ACTLEN1 DB?STRING1 DB 81 DUP (?)MAXLEN2 DB 81ACTLEN2 DB?STRING2 DB 81 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AH,09HMOV DX,OFFSET S3INT 21HMOV AH,0AHMOV DX,OFFSET MAXLEN1INT 21HCRLFMOV AH,09HMOV DX,OFFSET S4INT 21HMOV AH,0AHMOV DX,OFFSET MAXLEN2INT 21HCRLFMOV SI,OFFSET STRING1MOV AH,[SI-1]MOV DI,OFFSET STRING2MOV AL, [DI-1]CMP AH,ALJGE GE1MOV CL,ALGE1: MOV CL,AHKKK: MOV AL,[SI]mov AH,[DI]CMP aH,ALJNZ NE1INC SIINC DILOOP KKKMOV AH,09HMOV DX,OFFSET S1INT 21HJMP EXITNE1: MOV AH,09HMOV DX,OFFSET S2INT 21HEXIT: MOV AX,4CHINT 21HCODE ENDSEND START以下是程序运行结果:2.从键盘输入数据并显示的设计为掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为ASCII 码的原理,编写程序,将键盘接受到的四位十六进制数据转换为等值的二进制数显示。
微机原理实验报告
实验六题目:编程从键盘输入一个二位十进制的月份数(01~12),然后显示出相应的英文缩写名。
程序说明:(1)程序名:实验六(2)功能:查找月份(3)原理:将对应月份进行编排,当输入对应编号时输出对应月份(4)算法说明:首先是对十二个月的英文缩写进行定义,定义BUF1,BUF2;进行字符输出操作INPUT;判断输入的字符是否为回车;若是则结束,若不是则对输入的字符进行判断,判断若为0,则继续输入字符,并将输入的字符转换为相应的二进制码,通过二进制码的去取相应地址的英文缩写,并将结果输出;若判断不为0,则继续输入字符,并将字符转换为二进制码,需要进行高四位清零,通过二进制码的去取相应地址的英文缩写,并将结果输出。
(5)流程图:完整代码:DA TAS SEGMENTMONTH DB 'Jan'DB 'Feb'DB 'Mar'DB 'Apr'DB 'May'DB 'Jun'DB 'Jul'DB 'Agu'DB 'Sep'DB 'Oct'DB 'Nov'DB 'Dec'STRING1 DB 0DH,0AH,'Input the month numble ( Press ENTER to quit ):$' BUF1 DB 0DH,0AH,10 DUP(0)BUF2 DB 81,?,80 DUP(?)DA TAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TASSTART:MOV AX,DATASMOV DS,AXMOV ES,AXLOP1:CALL INPUTCMP [BUF2+2],0DH ;输入的字符是否为"回车"JZ EXIT ;若是回车则转至EXITCALL SUB1CALL OUTPUTJMP LOP1EXIT:MOV AH,4CHINT 21HINPUT PROC NEAR ;字符输入LEA DX,string1MOV AH,09H;显示Input the month numble ( Press ENTER to quit ):INT 21HLEA DX,BUF2;取BUF2偏移地址送DXMOV AH,0AH;输入字符INT 21HRETINPUT ENDPOUTPUT PROC NEAR ;字符输出MOV [DI],'$' ;将结束符送[DI]LEA DX,BUF1 ;取BUF1偏移地址MOV AH,09H ;显示INT 21HRETOUTPUT ENDPSUB1 PROC NEARMOV AL,[BUF2+2]CMP AL,30H;输入的字符是否等于0JNZ NEXT1;若等于0则转至EXIT1MOV AL,[BUF2+3];若不等,下一个输入的字符送ALAND AX,0FH;滤掉高四位DEC AXJMP NEXT2NEXT1:MOV AL,[BUF2+3];输入的字符送ALAND AX,0FH;滤掉高四位ADD AX,0AH ; 将显存的段起始地址设为当前行的下一行;[在段地址中加0AH,相当于在偏移地址中加了0A0H(=160d)] DEC AXNEXT2:MOV BX,AXSHL AX,1;AX左移一位ADD BX,AXMOV SI,BXLEA DI,BUF1;取BUF1偏移地址送DIADD DI,2MOV CX,3REP MOVSB;字符传送指令,重复3次因为月份缩写为3个字母RETSUB1 ENDPCODES ENDSEND START心得体会:该实验主要是想实现从键盘输入一个二位十进制的月份数(01~12),然后显示出相应的英文缩写名,首先是要对十二个月份的英文缩写进行编排,然后实现输入、查找、输出。
微机原理实验报告样本
实验一定时器/计数器实验一. 实验程序DATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSMOV AX,0PUSH AX;返回DOSMOV AX,DATAMOV DS,AX;初始DSMOV DX, 22bH ;控制字端口地址MOV AL, 00110111B ;定时器0工作在方式3,16位初值,BCD计数OUT DX,ALMOV DX, 228H ;计数通道0端口地址MOV AL,00HOUT DX,ALmov al,96h;初值9600H=9600out dx,alMOV DX,22BHMOV AL, 01010100B;定时器1工作在方式2,8位初值,二进制计数OUT DX,ALMOV DX,229H;计数通道1端口地址MOV AL,10H;初值10H=16OUT DX,ALJMP $CODE ENDSEND START二.实验连线及结果GATE0、GATE1--+5V, CLK0--153.6KHZ,OUT0--CLK1,OUT1--L1,CS8253--228H。
=153.6KHZ/9600=16HZfout0=16HZ/16=1HZfout1运行后可观察到LED1在不停闪烁,间隔周期为1秒。
实验二双色灯实验一. 实验程序DATA SEGMENTPB DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: POP DSMOV AX,OPUSH AX;返回DOAMOV DX,206H;控制字端口地址MOV AL,80H;A、B、C口全设置为方式0、输出 OUT DX,ALMOV DX,204H;C口端口地址MOV AL,0FFHOUT DX,AL ;全灭MOV DX,204H ;全红MOV AL,0FHOUT DX,ALMOV BX,7fH;延时参数CALL DLY;延时127tBG: MOV AL,5AH ;东西红,南北绿OUT DX,ALMOV BX,50HCALL DLY;延时50tMOV CX,03H;绿灯闪次数XH1: MOV AL,5FH ;东西红,南北灭OUT DX,ALMOV BX,10HCALL DLY;延时10tMOV AL,5AH ;东西红,南北绿OUT DX,ALMOV BX,10HCALL DLY;延时10tLOOP XH1;南北绿灯(灭→亮)重复CX次MOV AL,0AH ;东西红,南北黄OUT DX,ALMOV BX,20HCALL DLY;延时20tMOV AL,0A5H ; 东西绿,南北红OUT DX,ALMOV BX,50HCALL DLY;延时50tMOV CX,03;绿灯闪次数XH2: MOV AL,0AFH; 东西灭,南北红OUT DX,ALMOV BX,10HCALL DLY;延时10tMOV AL,0A5H; 东西绿,南北红OUT DX,ALMOV BX,10HCALL DLY;延时10tLOOP XH2;东西绿灯(灭→亮)重复CX次MOV AL,05H; 东西黄,南北红OUT DX,ALMOV BX,20HCALL DLY;延时20tJMP BGDLY PROC NEAR;延时子程序,延时t(假设BX=1) PUSH CXDDD: MOV CX,0FFFHCCC: LOOP CCCDEC BXCMP BX,0JNE DDDPOP CXRETDLY ENDPCODE ENDSEND START二.实验连线及结果将DG1~DG4,DR1~DR4连至8255的PC0~PC7,CS8255--200H。
微机实验报告
实验一汇编语言上机操作训练——比较字符串一、实验目的1、学习程序设计的基本办法和技能;2、纯熟掌握汇编语言设计、编写、调试和运行;二、实验内容和规定1、汇编语言程序上机操作办法编写一程序,比较两个字符串STRING1 和STRING2 所含字符与否相似,若相似刚在屏幕上显示‘MATCH’,否则,显示‘NOT MATCH’。
三、实验重要仪器设备和材料计算机一台四、程序略五、调试过程:1、执行程序表达两字符串相似2、u 命令反汇编:3、在程序执行以前的寄存器状况:内存状况:4、用E 命令修改数据区字符串及修改前后内存数据区的对比:5、用G 命令查看修改后的状况:修改后的字符串不相似了。
六、程序功效与调试过程中碰到的问题1、分析程序功效程序的功效是比较string1 与string2 所含字符与否相似,若相似则在屏幕上显示‘MATCH’,否则,显示‘NOT MATCH’。
由于string1 为‘Move the cursor backward’,string2 为’ Move the cursor backward’。
因此string1 与string2 相似,显示’MATCH’。
背面用重新修改了下这些字符,会显示“not Match”2、调试程序过程中碰到的问题对汇编认识停留在上课老师的文字体现,至于实际操作,能够说完全不懂,只能在实验室里对着实验书一步步做下去,没碰到什么问题。
但是回到宿舍中,连在哪输入都不懂得,可想而知对汇编的认知度。
好在在同窗们的协助下,还是能够顺利的完毕了实验。
只是做的时候对有些过程与指令不太明白,通过查阅有关资料后之后,也弄明白了个大概,但愿在后来的微机课程学习中多用心。
七、思考题1、将内存DATA1 单元开始的0~15 共16 个数传送到DATA2 单元开始的数据区中。
MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,DATA1LEA DI,DATA2MOV CX,16CLDREP MOVSB2、将程序中的指令JZ MATCH 改为JNZ MATCH,程序成果如何?为什么?JZ 为零标志为1 转移,而JNZ 为零标志为0 转移。
微机原理__字符匹配程序实验报告
太原理工大学现代科技学院课程实验报告专业班级学号姓名指导教师一、实验目的掌握提示信息的使用方法及键盘输入信息的用法。
二、实验内容1、编写程序,实现两个字符串比较。
如果两个字符串中有一个字符相同,显示“MATCH”,否则,显示“NO MATCH”。
2、程序框图三、所用仪器与软件仪器:电脑一台软件:Masm for Windows 集成实验环境 2009、7四、实验方法、步骤1、编写程序代码2、运行程序,修改错误代码3、再次运行代码直至运行出正确结果五、源码程序编制及分析注释CRLF MACRO 宏定义MOV AH,02H AH=02HMOV DL,0DH DL=0DHINT 21H 系统功能调用,输出回车字符MOV AH,02H AH=02HMOV DL,0AH DL=0AINT 21H 系统功能调用,输出换行符ENDM 宏定义结束DATA SEGMENT 定义数据段MESS1 DB 'MATCH',0DH,0AH,'$' 定义8个数据储存单元MESS2 DB 'NO MATCH',0DH,0AH,'$' 定义11个数据储存单元MESS3 DB 'INPUT STRING1:',0DH,0AH,'$' 定义17个数据储存单元MESS4 DB 'INPUT STRING2:',0DH,0AH,'$' 定义17个数据储存单元MAXLEN1 DB 81 定义最大长度为81个字节ACTLEN1 DB ?STRING1 DB 81 DUP (?) 定义STRING1长度为81 MAXLEN2 DB 81 定义最大长度为81ACTLEN2 DB ?STRING2 DB 81 DUP (?) 定义STRING2长度为81DATA ENDS 数据段结束STACK SEGMENT STACK 定义堆栈段STA DB 50 DUP (?) 定义50个数据储存单元TOP EQU LENGTH STA 给TOP赋值50STACK ENDS 堆栈段结束CODE SEGMENT 定义代码段ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK 定义段基址START: MOV AX,DATAMOV DS,AX 把DATA的首地址赋给DSMOV ES,AX 把DATA的首地址赋给ESMOV AX,STACKMOV SS,AX 把STACK的首地址赋给SSMOV SP,TOP 给SP赋值50MOV AH,09H AH=09HMOV DX,OFFSET MESS3 把MESS3的偏移地址赋给DXINT 21H 系统功能调用MOV AH,0AH AH=0AHMOV DX,OFFSET MAXLEN1 把MAXLEN1的偏移地址赋给DXINT 21H 系统功能调用CRLFMOV AH,09H AH=09HMOV DX,OFFSET MESS4 把MESS4的偏移地址赋给DXINT 21H 系统功能调用MOV AH,0AH AH=0AHMOV DX,OFFSET MAXLEN2 把MAXLEN2的偏移地址赋给DXINT 21H 系统功能调用CRLFCLDMOV SI,OFFSET STRING1 把STRING1的偏移地址赋给SIMOV CL,[SI-1] 把SI-1内的内容赋给CLMOV CH,00H CH=00HKKK: MOV DI,OFFSET STRING2 把STRING2的偏移地址赋给DI PUSH CX 将CX压入堆栈MOV CL,[DI-1] 将DI-1内的的内容赋给CLMOV CH,00H CH=00HMOV AL,[SI] 将SI内的内容赋给ALMOV DX,DI 将DI赋给DXREPNZ SCASB 寻找第一个相同字符JZ GGG ZF=0执行GGG否则顺序执行INC SI SI自加1POP CX 弹出CXLOOP KKK 跳转到KKK循环MOV AH,09HMOV DX,OFFSET MESS2INT 21H 系统功能调用JMP PPP 跳转到PPPGGG: MOV AH,09HMOV DX,OFFSET MESS1INT 21H 输出MESS1PPP: MOV AX,4C00HINT 21H 带返回码结束CODE ENDS 代码段结束END START 整个程序结束六、实验结果与分析实验结果如下:(1)两个字符串中没有字符相同:(2)两个字符串中有两个字符相同:。
贵州大学微机原理(汇编语言)实验报告_自编程序实验1_用表格形式显示字符
实验课程名称微型计算机原理实验报告实验项目名称自编程序实验1 专业班级电子信息科学与技术08级1班学生姓名学号实验成绩指导教师签字理学院实验时间:2010年12月6日自编程序实验1 用表格形式显示字符1、题目:用表格形式显示ASCII字符2、实验要求:按15行*16列的表格形式显示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白字符(ASCII码为0)隔开。
3、提示:(1)显示每个字符可使用功能号为2的显示输出功能调用MOV AH,2MOV DL,10H;字符从10H开始,每显示一个DL+1产生下一个字符INT 21H(2)显示空白符时DL=00H;(3)每行显示结束时需要显示回车(ASCII码为0DH)和换行(ASCII码为0AH),本行显示结束后可另起一行显示。
基本实验程序如下:;ASCII.ASMDA TA SEGMENTINFO DB '**This is a display ASCII codesheet.(10H-100H)**',0DH,0AH,'$'DA TA ENDSCODE SEGMENTASSUME DS:DA TA,CS:CODESTART: MOV AX,DATAMOV DS,AXLEA DX,INFOMOV AH,9INT 21HMOV DX,10HLINE: MOV CL,16CYCLE: MOV AH,2INT 21HINC DXCMP DX,100HJZ DONEPUSH DXMOV AH,2MOV DL,0INT 21HPOP DXDEC CLCMP CL,0JZ NEXTJMP CYCLE| 微型计算机原理实验报告 1NEXT: PUSH DXMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HPOP DXJMP LINEDONE: MOV AH,4CHINT 21HCODE ENDSEND START结果如图所示:加上表格线后的实验程序如下:;ASCII.ASMDA TA SEGMENTINFO DB 0DH,0AH,' **This is a display ASCII codesheet.(10H-100H)**',0DH,0AH,0DH,0AH,'$'DA T1 DB201,205,205,205,209,205,205,205,209,205,205,205,209,205,205,205,209,205,20 5,205,209,205,205,205,209,205,205,205,209,205,205,205,209,'$'DA T2 DB205,205,205,209,205,205,205,209,205,205,205,209,205,205,205,209,205,205,20 5,209,205,205,205,209,205,205,205,209,205,205,205,187,0DH,0AH,'$'DA T3 DB0DH,0AH,200,205,205,205,207,205,205,205,207,205,205,205,207,205,205,205, 2微型计算机原理实验报告|207,205,205,205,207,205,205,205,207,205,205,205,207,205,205,205,207,'$'DA T4 DB205,205,205,207,205,205,205,207,205,205,205,207,205,205,205,207,205,205,205,207,205,205,205,207,205,205,205,207,205,205,205,188,'$'DA TA ENDSCODE SEGMENTASSUME DS:DA TA,CS:CODESTART: MOV AX,DATAMOV DS,AXLEA DX,INFO ;显示提示信息MOV AH,9INT 21HLEA DX,DAT1 ;显示表格的顶线INT 21HLEA DX,DAT2 ;显示表格的顶线INT 21HMOV DX,10HLINE: PUSH DX ;对DL中的数据保护MOV DL,186 ;显示表格最左边边线MOV AH,2INT 21HMOV DL,0INT 21HPOP DX ;返回DL中的数据MOV CL,16MOV CH,16CYCLE: INT 21H ;显示DL里存的ASCII码字符INC DX ;DX自加,指向下一个字符CMP DX,100H ;与100H比较,看是否是显示完毕JZ DONE ;是,结束程序DEC CHCMP CH,0JZ NEXT0CALL DISP ;调用子程序,显示间隔线NEXT0: DEC CL ;CL自减,用于16个字符显示完毕后换行CMP CL,0JZ NEXTJMP CYCLENEXT: PUSH DXMOV DL,0INT 21HMOV DL,186 ;显示表格最右边边线INT 21H| 微型计算机原理实验报告 3MOV DL,0DH ;回车换行INT 21HMOV DL,0AHINT 21HPOP DXJMP LINEDISP PROCPUSH DXMOV DL,0INT 21HMOV DL,179INT 21HMOV DL,0INT 21HPOP DXRETDONE: MOV DL,0INT 21HMOV DL,186INT 21HLEA DX,DAT3MOV AH,9INT 21HLEA DX,DAT4INT 21HMOV AH,4CHINT 21HCODE ENDSEND START结果如图所示:4微型计算机原理实验报告|| 微型计算机原理实验报告 5。
微机原理课程设计报告
微机课程设计报告班级:姓名:学号:任务一:1、目的:字符串匹配的设计要求:为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较,如相同,则显示“MATCH”;否则,显示“NO MATCH”。
2、流程图3、源程序:DATAS SEGMENTs1 db'please input the first string:','$'st1 db 100db?db 100 dup(?)s2 db 0ah,'plaese input the second string:','$'st2 db 100db?db 100 dup(?)s3 db 0ah,'matah','$'s4 db 0ah,'no match','$';此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXmov dx,offset s1 ;显示提示信息1mov ah,9hint 21hmov dx,offset st1 ;接收键入的字符串1mov ah,0ahint 21hmov dx,offset s2 ; 显示提示信息2mov ah,9hint 21hmov dx,offset st2 ;接收键入的字符串2mov ah,0ahint 21hmov si,offset st1 ;字符串1的地址送给SImov di,offset st2 ; 字符串2的地址送给DImov ax,0lp1: mov bl,[si+1] ; 字符串1的字符数送给bl cmp bl,[di+1] ;字符串2的字符数与字符串1相比较jnz lp4 ;不等转lp4mov al,[si+1]mov cx,ax ; 给cx赋字符串1的字符数lp2: mov bl,[si+2] ; 字符串1的第一个字符在字符串2中匹配cmp bl,[di+2]jnz lp4inc siinc diloop lp2 ;循环cx内容减1,cx不等于0,继续循环,跳转lp2lp3: mov dx,offset s3mov ah,9hint 21hjmp nextlp4: mov dx,offset s4mov ah,9hint 21h;此处输入代码段代码next: MOV AH,4CHINT 21HCODES ENDSEND START4、结果:5、心得要先比较字符串的长度,前面要先分别定义match和nomatch,并且应该保留足够的字节空间。
大学微机原理实验报告(3篇)
第1篇实验名称:微机原理实验实验日期:2023年10月25日实验地点:计算机实验室实验教师:[教师姓名]实验学生:[学生姓名]班级:[班级名称]一、实验目的1. 理解微机原理的基本概念和组成结构。
2. 掌握微机硬件的基本操作和调试方法。
3. 熟悉汇编语言编程和程序调试技巧。
4. 通过实验加深对微机原理课程的理解,提高动手能力。
二、实验内容本次实验主要分为以下几个部分:1. 微机硬件系统结构认识:了解微机硬件系统的组成,包括CPU、内存、I/O接口等,熟悉各部件的功能和相互关系。
2. 汇编语言编程:学习汇编语言的基本语法和指令系统,编写简单的汇编程序,实现特定功能。
3. 程序调试:使用调试工具(如DEBUG)对汇编程序进行调试,查找并修正错误。
4. 微机原理实验:完成以下实验任务:1. 编写程序实现两个多位十进制数的相加。
2. 编写程序实现字符串比较功能。
3. 编写程序实现乘除法运算。
三、实验步骤1. 微机硬件系统结构认识:- 观察实验室中的微机硬件系统,了解各部件的连接方式和功能。
- 使用示波器检测实验装置的信号是否正常。
2. 汇编语言编程:- 学习汇编语言的基本语法和指令系统。
- 编写程序实现两个多位十进制数的相加,程序如下:```;加数DATA1 DB 3,4,5,6,7;被加数DATA2 DB 2,3,4,5,6;结果SUM DB 5 DUP(0);程序开始MOV CX, 5 ;循环次数MOV AL, 0 ;结果初始化为0MOV SI, OFFSET DATA1 ;加数地址MOV DI, OFFSET DATA2 ;被加数地址ADD_LOOP:ADD AL, [SI] ;加数加到AL寄存器ADC AL, [DI] ;进位加到AL寄存器MOV [DI], AL ;结果存回DI寄存器ADD SI, 1 ;加数地址加1ADD DI, 1 ;被加数地址加1LOOP ADD_LOOP ;循环;程序结束```- 编写程序实现字符串比较功能,程序如下:```;字符串1STRING1 DB 'Hello';字符串2STRING2 DB 'World';比较结果RESULT DB 0;程序开始MOV SI, OFFSET STRING1 ;字符串1地址MOV DI, OFFSET STRING2 ;字符串2地址CMP_LOOP:MOV AL, [SI] ;读取字符串1的当前字符CMP AL, [DI] ;与字符串2的当前字符比较 JNE NOT_EQUAL ;不相等则跳转到NOT_EQUAL INC SI ;字符串1地址加1INC DI ;字符串2地址加1LOOP CMP_LOOP ;循环MOV RESULT, 1 ;相等则将结果设置为1JMP END ;跳转到ENDNOT_EQUAL:MOV RESULT, 0 ;不相等则将结果设置为0END:;程序结束```- 编写程序实现乘除法运算,程序如下:```;被乘数DATA1 DB 10;乘数DATA2 DB 5;结果PRODUCT DB 0;程序开始MOV AL, [DATA1] ;被乘数加载到AL寄存器MUL [DATA2] ;乘数乘到AL寄存器MOV [PRODUCT], AL ;结果存回PRODUCT;程序结束```3. 程序调试:- 使用DEBUG工具对汇编程序进行调试,查找并修正错误。
(完整word版)微机原理完整实验报告+程序
实验题目8253定时/计数器实验 一、 实验目的与要求: 1. 学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。
二、 实验内容: 1、实验原理 本实验原理图如图 1所示,8253A 的A0、A1接系统地址总线 A0、A1,故8253A 本实验通道2 有四个端口地址,如端口地址表 1所示。
8253A 的片选地址为 48H~ 4FH 。
因此, 仪中的8253A 四个端口地址为 48H 、49H 、4AH 、4BH ,分别对应通道 0、通道1、 和控制字。
采用8253A 通道0,工作在方式3(方波发生器方式),输入时钟CLK0为 输出OUTO 要求为1KHZ 的方波,并要求用接在 GATE0引脚上的导线是接地("0" 甩空("1"电平)来观察GATE 对计数器的控制作用,用示波器观察输出波形。
2、实验线路连接 (1) 8253A 芯片的CLK0引出插孔连分频输出插孔 (2) 8253A 的 GATE0 接+5V 。
实验步骤 (1) 按图1连好实验线路(2) 运行实验程序 1. 按“调试”按钮2. 选“窗口” “进入示波器窗口” ,然后最小化3. 按“运行按钮”4.将模拟示波器窗口打开,选择“串行口 2”,再按 Ctrl + F2按钮即可看到波形 显示“ 8253-1 ”用示波器测量8253A 的OUT2输出插孔,方波输出,幅值0〜4V 三、实验代码: 1MHZ ,电平)或 3、 CODE SEGMENT ASSUME CS:CODE TCONTRO EQU 004BH TCON2 EQU 004AH CONT PORT EQU 00DFH DATA PORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT TCONT: CALL FORMATCALL LEDDIS P MOV DX,TCONTRO1MHZ 。
微机课程设计报告
微机原理课程设计报告课程设计名称:微机原理课程设计学院名称:电气信息工程学院专业:自动化班级:学号: 3 姓名:2013 年 1 月 11 日一、目的:结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。
学会使用屏幕编辑程序——EDIT,弄懂汇编程序的上级过程以及如何运用DEBUG软件进行汇编程序的调试。
二、内容与要求:1.字符串匹配设计为掌握提示信息的设置和输入方法及读取键入信息的方法。
编写程序实现两个字符串比较。
如相同,则显示“MATCH”,否则,显示“NO MATCH”。
2.响铃设计为掌握响铃的使用方法,编写程序,从键盘接受输入字符,如是数字N则响铃N此,如不是数字则不响。
3.将键盘输入的小写字母转换成大写字母的设计为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。
4.排序设计为掌握用汇编语言编写排序程序的思路和方法。
编写程序,从首地址为1000H开始存放50个数,要求设计程序将这些数从小到大排序,排序后的数,仍放在该区域中。
下面着重介绍程序2——响铃设计:三、流程图:四、程序代码及注释DATA SEGMENTD1 DB 'PLEASE INPUT A NUMBER:','$'D2 DB 0AH,'ERROR!','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,D1MOV AH,9INT 21HMOV AH,1INT 21HCMP AL,30H ;键盘输入值与0比较JB L2CMP AL,39H ;键盘输入值与9比较JA L2AND AL,0FHCMP AL,0JE OVERMOV CL,ALL1: MOV DL,07H ;实现响铃MOV AH,2INT 21HDELAY: MOV DX,0FFFFH ;延迟功能TI1: MOV AX,0FFFFH ;循环嵌套实现延迟功能TI2: DEC AXJNZ TI2DEC DXJNZ TI1DEC CL ;通过CL控制响铃次数 JNZ L1JMP OVERL2: LEA DX,D2MOV AH,9INT 21HOVER: MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START五、心得体会:为期一周的微机原理课程设计已经接近尾声了,通过这次近一周的上机实训,使我们对于汇编语言的运用有了更加深刻的认识,同时在与老师和同学的不断沟通交流中自己学到了很多知识,也纠正了以往的一些错误,可谓是受益匪浅。
微机原理字符串匹配
大学学生实验报告(2010 —2011 学年第二学期)课程名称:微型计算机原理与接口技术开课实验室:205 2011年 5 月 30 日一、实验目的、要求1.掌握提示信息的使用方法及键盘输入信息的用法。
二、实验原理及基本技术路线图或实验内容1.编写程序,实现两个字符串比较。
如果两个字符串中有一个字符相同,显示“MATCH”,否则,显示“NO MATCH”。
2.程序框图三、所用仪器、材料和软件软件名称为:MASM FOR Windows 集成实验环境2009.7四、实验方法、步骤根据实验的目的在该环境中编写出源代码,在进行调试、运行后,看能否得出结果。
五、源码程序编制及分析注释程序清单及注释CRLF MACRO ;宏定义MOV AH,02H ;AH=02HMOV DL,0DH ;DL=0DHINT 21H ;系统功能调用来输出个回车字符MOV AH,02H ;AH=02HMOV DL,0AH ;DL=0AHINT 21H ;系统功能调用来输出一个换行符ENDM ;宏定义结束DATA SEGMENT ;数据段定义MESS1 DB 'MATCH',0DH,0AH,'$' ;定义8个存储单元的数据MESS2 DB 'NO MATCH',0DH,0AH,'$' ;定义11个存储单元的数据MESS3 DB 'INPUT STRING1:',0DH,0AH,'$' ;定义17个存储单元的数据MESS4 DB 'INPUT STRING2:',0DH,0AH,'$' ;定义17个存储单元的数据MAXLEN1 DB 81 ;字符串1的缓冲区最大字符数ACTLEN1 DB ? ;字符串1的实际输入字符的个数STRING1 DB 81 DUP (?) ;用来存储字符串1的81个单元MAXLEN2 DB 81 ;字符串2的缓冲区最大字符数ACTLEN2 DB ? ;用来存放字符串2的实际字符个数STRING2 DB 81 DUP (?) ;用来存储字符串2的81个单元DATA ENDS ;数据段定义结束STACK SEGMENT STACK ;堆栈段定义STA DB 50 DUP (?) ;在堆栈段定义50个空字符TOP EQU LENGTH STA ;TOP=50STACK ENDS ;堆栈段定义结束CODE SEGMENT ;代码段定义ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK ;段分配START: MOV AX,DATA ;MOV DS,AX ;将数据段的段地址赋给DSMOV ES,AX ;将数据段的段地址赋给ESMOV AX,STACK ;MOV SS,AX ;将堆栈段的段地址赋给SSMOV SP,TOP ;SP=50MOV AH,09H ;AH=09HMOV DX,OFFSET MESS3 ;INT 21H ;输出'INPUT STRING1:MOV AH,0AHMOV DX,OFFSET MAXLEN1INT 21H ;(DS:DX)=最大字符数,(DS:DX+1)=实际的字符数CRLFMOV AH,09HMOV DX,OFFSET MESS4INT 21H ;输出INPUT STRING2:MOV AH,0AHMOV DX,OFFSET MAXLEN2INT 21H ;(DS:DX)=最大字符数,(DS:DX+1)=实际的字符数CRLF ;宏调用CLD ;DF=0,则串操作有低地址向高地址方向进行MOV SI,OFFSET STRING1 ;将字符串1的偏移地址赋给SIMOV CL,[SI-1] ;将字符串1的字符实际个数赋给CLMOV CH,00H ;CH=00HKKK: MOV DI,OFFSET STRING2 ;将字符串2的偏移地址赋给DI PUSH CX ;将CX中的值即为字符串1的字符个数压入堆栈MOV CL,[DI-1] ;将字符串2的字符个数赋给CLMOV CH,00H ;CH=00HMOV AL,[SI] ;取出字符串1的第一个字符给ALMOV DX,DI ;将字符串2的第一个字符赋给DXREPNZ SCASB ;CX!=0(没有查完)和ZF=0(不相等)时重复JZ GGG ;ZF=1,表示已经搜到了相等的字符,则转出INC SI ;SI=SI+1POP CX ;弹出原先字符串1中剩下未被进行比较的字符个数LOOP KKK ;CX-1!=0则继续返回到子过程KKKMOV AH,09HMOV DX,OFFSET MESS2INT 21H ;否则CX=0时的系统功能调用将显示NO MATCHJMP PPP ;将跳转到PPPGGG: MOV AH,09HMOV DX,OFFSET MESS1INT 21H ;系统功能调用将显示MATCHPPP: MOV AX,4C00HINT 21H ;系统功能调用显示控制台的操作界面CODE ENDS ;代码段结束END START ;伪指令结束六、实验结果、分析和结论和体会1、实验结果如图所示2、实验分析:注意相关指令的运用与子啊存储空间中分段的运用3、体会:对一些指令进一步熟悉,对指令的执行过程有很好的了解(注:文档可能无法思考全面,请浏览后下载,供参考。
微机原理实验报告4
实验4 字符及字符串的输入和输出一、实验任务及实验目的1、熟悉如何进行字符及字符串的输入输出。
2、掌握简单的dos系统功能调用3、熟悉在pc上建立、汇编、链接、调试和运行8086汇编语言的全过程二、实验内容、过程及实验现象记录1、assume cs:cseg,ds:dsegdseg segment;数据段dseg endcseg segmentmain proc farmov ax,dsegmov ds,ax;主程序mov ax,4c00hint 21hmain endpcseg endsend main2、(1)AL=35,是字符5的ACSCII码(2)分别是41、42、43、44,是A、B、C、D的ASCII码3、(1)是04h,它表示实际输入的字符个数。
(2)从DS:1002H开始的内存区域中的内容分别是5、4、3、2和回车键ASCII码。
其中没有字符“1”的ASCII码,因为实际长度只有4位,其中有一位是回车键,所以没有字符“1”的ASCII码。
(1)显示了。
(2)和第一题是一样的,屏幕都显示了对应的字符。
(3)屏幕都没有显示。
0ah是回车键的ASCII码,对应无显示。
(4)没有输出,有‘哔’的一声5、org 100hmov ax, 3int 10hmov ax, 1003hmov bx, 0int 10hmov ax, 0b800hmov ds, axmov [02h], 'H'mov [04h], 'e'mov [06h], 'l'mov [08h], 'l'mov [0ah], 'o'mov [0ch], ','mov [0eh], 'W'mov [10h], 'o'mov [12h], 'r'mov [14h], 'l'mov [16h], 'd'mov [18h], '!'mov cx, 12mov di, 03hret7、codes segmentassume cs:codesstart:mov ch,20hmov bl,6lll:mov bh,16ll:mov dl,chmov ah,2int 21hinc chdec bhjnz llmov dl,0ahint 21hmov dl,0dhint 21hdec bljnz lllmov ah,4chint 21hcodes endsend start三、实验结果及总结通过此次实验,我熟悉了如何进行字符及字符串的输入输出,掌握了简单的DOS系统功能调用,学到了不少知识。
微机原理实验报告
微机原理第二次试验字符及字符串输入输出与顺序程序设计实验班级:科技1203班姓名:巨振奇学号:********日期:2014/10/282.2 字符及字符串输入输出与顺序程序设计实验2.2.1 实验目的1、学习和掌握字符及字符串的输入输出方法。
2、掌握顺序程序的设计方法。
3、进一步掌握调试工具的使用方法。
2.2.2 实验预习要求1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材 5.5.6)。
2、复习BCD码运算调整指令。
3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。
4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。
..3 实验内容从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。
1、补全“2.2.3 实验内容”中源程序框架内未写出的程序代码,并说明你在调试该程序过程中遇到了哪些问题,是如何处理的。
DATA SEGMENTINFOR1 DB"Please Input the First Data(<10):$"INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"INFOR3 DB 0AH,0DH,"The Result is:$"DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET INFOR1 ;显示输入数MOV AH,09HINT 21HMOV AH,01H ;输入第一个数INT 21HSUB AL,30HMOV BL,ALMOV DX,OFFSET INFOR2 ;显示输入数 MOV AH,09HINT 21HMOV AH,01H ;输入第二个数INT 21HSUB AL,30HXOR AH,AH ;输入的两个数相加 ADD AL,BLAAAPUSH AXMOV DX,OFFSET INFOR3 ;显示MOV AH,09HINT 21HPOP AXPUSH AXMOV DL,AHADD DL,30HMOV AH,02HINT 21HPOP AXMOV DL,ALADD DL,30HMOV AH,02HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START2、从“2.2.4 实验习题”中任选一道题目,画出流程图,编写源程序,并说明在调试过程中遇到了哪些问题,是如何处理的。
微机原理实验报告一
微机原理实验报告一2021年5月24日一、实验目的1、自学程序设计的基本方法和技能;2、熟练掌握汇编语言设计、编写、调试和运行;二、实验内容和要求撰写一程序,比较两个字符串string1和string2含有字符与否相同,若相同则在屏幕上表明‘match’,否则,表明‘notmatch’。
三、实验主要仪器设备和材料1、计算机一台四、实验方法、步骤及结构测试1、建立asm文件2、用汇编程序masm对源文件“*.asm”编订产生目标文件*.obj;3、用相连接程序link产生可执行文件*.exe.4、执行程序5、用debug调试程序五、分析程序功能,调试程序过程中碰到的问题该程序实现对两个字符串的比较,字符串内容相同,则显示match,内容不相同,则显示nomatch。
调试过程中,由于存在着中文和英文字符的差异,导致出现了编译错误,经过学习修改,改正了错误,同时也学习到了标准序,返回dos系统等基本操作。
六、思考题1、汇编语言的内置环境存有几个主要环节?汇编语言的集成环境主要有编译,连接,执行三大环节。
2、将程序中的指令jzmatch改成jnzmatch,程序结果如何?为什么?若将指令改为jnzmatch,则将导致结果相反,字符串相等时显示nomatch,反之显示match。
jnz意思是当结果不为0时跳转到match所在地址,故当比较结果为0时不跳,跟原程序意思相反,故出现相反结果3、将内存data1单元已经开始的0~15共16个数传输至data2单元已经开始的数据区中主要程序段如下:data1db1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16data2db16dup(?)leadi,[data1]leasi,[data2]movcx,15loop1:movbx,ds:[di]movds:[si] ,bxincdiincsilooploop1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
昆明理工大学津桥学院学生实验报告
(2010—2011学年第二学期)
课程名称:微型计算机原理与接口技术开课实验室:205教室 2011年5 月10日年级、专业、班电信092 学号2009160
22217
姓名邵苗苗成绩
实验项目名称字符匹配程序指导教师许江淳教
师
评语
教师签名:年月日
一、实验目的
掌握提示信息的使用方法及键盘输入信息的用法。
二、实验内容
1、编写程序,实现两个字符串比较。
如果两个字符串中有一个字符相同,显示“MATCH”,否则,显示“NO MATCH”。
2、程序框图
段寄存器及堆栈初始化
显示“请输入字符串1”
使用INT 21H的0A号子功能,
接收键入的字符串
显示“请输入字符串2”
指针SI指向串1的首字符
SI指向的字符串和串2中所有字符作比较
Y
相等?
N
SI+1,指向串1中下一字符
N
串1中的字符已取完?
Y
显示“NO MATCH”显示“MATCH”
返回DOS
三、所用仪器和软件
仪器:电脑一台
软件:Masm for Windows 集成实验环境 2009.7
四、实验方法、步骤
1、编写程序代码
2、运行程序,修改错误代码
3、再次运行代码直至运行出正确结果
五、源码程序编制及分析注释
CRLF MACRO 宏定义
MOV AH,02H AH=02H
MOV DL,0DH DL=0DH
INT 21H 系统功能调用,输出回车字符
MOV AH,02H AH=02H
MOV DL,0AH DL=0A
INT 21H 系统功能调用,输出换行符ENDM 宏定义结束
DAT A SEGMENT 定义数据段
MESS1 DB 'MATCH',0DH,0AH,'$' 定义8个数据储存单元MESS2 DB 'NO MATCH',0DH,0AH,'$' 定义11个数据储存单元MESS3 DB 'INPUT STRING1:',0DH,0AH,'$' 定义17个数据储存单元MESS4 DB 'INPUT STRING2:',0DH,0AH,'$' 定义17个数据储存单元MAXLEN1 DB 81 定义最大长度为81个字节ACTLEN1 DB ?
STRING1 DB 81 DUP (?) 定义STRING1长度为81 MAXLEN2 DB 81 定义最大长度为81
ACTLEN2 DB ?
STRING2 DB 81 DUP (?) 定义STRING2长度为81
DAT A ENDS 数据段结束
ST ACK SEGMENT ST ACK 定义堆栈段
ST A DB 50 DUP (?) 定义50个数据储存单元
TOP EQU LENGTH ST A 给TOP赋值50
ST ACK ENDS 堆栈段结束
CODE SEGMENT 定义代码段
ASSUME CS:CODE,DS:DAT A,ES:DAT A,SS:ST ACK 定义段基址
ST ART: MOV AX,DAT A
MOV DS,AX 把DATA的首地址赋给DS
MOV ES,AX 把DATA的首地址赋给ES
MOV AX,ST ACK
MOV SS,AX 把STACK的首地址赋给SS
MOV SP,TOP 给SP赋值50
MOV AH,09H AH=09H
MOV DX,OFFSET MESS3 把MESS3的偏移地址赋给DX
INT 21H 系统功能调用
MOV AH,0AH AH=0AH
MOV DX,OFFSET MAXLEN1 把MAXLEN1的偏移地址赋给DX
INT 21H 系统功能调用
CRLF
MOV AH,09H AH=09H
MOV DX,OFFSET MESS4 把MESS4的偏移地址赋给DX
INT 21H 系统功能调用
MOV AH,0AH AH=0AH
MOV DX,OFFSET MAXLEN2 把MAXLEN2的偏移地址赋给DX
INT 21H 系统功能调用
CRLF
CLD
MOV SI,OFFSET STRING1 把STRING1的偏移地址赋给SI
MOV CL,[SI-1] 把SI-1内的内容赋给CL
MOV CH,00H CH=00H
KKK: MOV DI,OFFSET STRING2 把STRING2的偏移地址赋给DI PUSH CX 将CX压入堆栈
MOV CL,[DI-1] 将DI-1内的的内容赋给CL
MOV CH,00H CH=00H
MOV AL,[SI] 将SI内的内容赋给AL
MOV DX,DI 将DI赋给DX
REPNZ SCASB 寻找第一个相同字符
JZ GGG ZF=0执行GGG否则顺序执行
INC SI SI自加1
POP CX 弹出CX
LOOP KKK 跳转到KKK循环
MOV AH,09H
MOV DX,OFFSET MESS2
INT 21H 系统功能调用
JMP PPP 跳转到PPP
GGG: MOV AH,09H
MOV DX,OFFSET MESS1
INT 21H 输出MESS1
PPP: MOV AX,4C00H
INT 21H 带返回码结束
CODE ENDS 代码段结束
END ST ART 整个程序结束
六、实验结果、分析和结论和体会
实验结果如下:
(1)两个字符串中没有字符相同:
(2)两个字符串中有两个字符相同:
实验体会:《微机原理与接口技术》这门课程我初学时,感觉摸不着头脑。
面对着众多的术语、概念及原理性的问题不知道该如何下手。
但在学习这门课的过程中我逐渐了解到,要学好这门课程首先要透彻理解这些名词、术语的意思,由浅及深,为今后深入学习打
基础。
由最初的读不懂程序到会读一些简单的程序,我对《微机原理》有了进一步的了解。
通过此次试验我认识到在学习中遇到任何问题,都绝对不能轻易放弃,力求真正弄懂。