微机汇编语言编程系统实验报告
微机原理与汇编语言实验报告

微机原理与汇编语言实验报告学号:********班级:*****姓名:*****指导教师:*****一.实验目的1.通过上机实验进一步熟悉并掌握汇编语言的指令系统和寻址方式;2.熟悉汇编语言程序上机的流程,以及与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)3.学习汇编程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法4.能够独自编写,调试,并成功运行一个完整的程序。
二.实验内容与步骤1.掌握汇编语言程序上机过程首先,新建文本文档后将扩展名改为.ASM,这是汇编语言源程序的文件格式,以记事本形式打开后在其中键入所编写的程序。
第一次题目是在屏幕上显示一串字符串,在老师的指导下,编写的程序如下:data segmentnote db 'hello','$'data endscode segmentmain proc farassume cs:code,ds:data,es:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov es,axmov ah,09hlea dx,noteint 21hmain endpcode endsend start之后,要进行编译和运行。
源程序经过翻译程序成为机器能够识别的目标程序,目标程序再经过连接程序连接后转换成在机器上可执行的程序。
基本流程图如下:在编译的过程中,程序查出的主要是语法上的错误,如果有错,则不能通过汇编,要纠错后重新汇编直到无错为止。
最后,生成的.EXE文件即为可执行文件,从磁盘调入内存运行,得到运行结果。
上述程序的运行结果为在屏幕上显示出“hello”。
2.编程完成任意两个两位数的加法运算编程任务的基本要求为:从键盘输入任意两个两位数相加,将结果显示在屏幕上。
刚开始拿到题目后,头脑里是比较混乱的。
经过与同学的探讨之后,我们大概确定出要完成整个功能,需经过以下过程:将输入的ASCII码与十进制数值进行转换,并保存在寄存器中;通过调用程序将两个数相加,并将结果保存;将结果显示在屏幕上。
汇编语言——实习报告

汇编语言——实习报告在大学的学习生涯中,我有幸参与了一次关于汇编语言的实习。
通过这次实习,我对汇编语言有了更深入的理解和掌握,也积累了宝贵的实践经验。
一、实习目的本次实习的主要目的是让我们熟悉汇编语言的编程环境和基本语法,掌握汇编语言程序的设计和调试方法,提高我们的编程能力和解决问题的能力。
同时,通过实际的项目开发,培养我们的团队合作精神和创新意识。
二、实习环境我们使用的编程环境是 MASM(Microsoft Macro Assembler),这是一款功能强大的汇编语言编译器。
同时,我们还使用了一些调试工具,如 DEBUG 和 CodeView,来帮助我们查找和解决程序中的错误。
三、实习内容1、基础语法学习在实习的初期,我们首先学习了汇编语言的基础语法,包括数据类型、寄存器的使用、指令系统等。
通过大量的示例代码和练习,我们逐渐掌握了如何使用汇编语言进行基本的算术运算、逻辑运算和数据传输。
2、程序设计与实现在掌握了基础语法之后,我们开始进行程序设计和实现。
我们先后完成了一些简单的程序,如加法器、减法器、乘法器等。
在这个过程中,我们不仅要考虑程序的功能实现,还要注意代码的优化和效率。
3、系统调用和中断处理接下来,我们学习了如何在汇编语言中进行系统调用和中断处理。
通过使用系统提供的中断服务例程,我们实现了一些与操作系统交互的功能,如文件操作、控制台输入输出等。
4、项目开发在实习的后期,我们分组进行了一个小型的项目开发。
我们的项目是开发一个简单的操作系统内核,包括进程管理、内存管理、文件系统等模块。
在项目开发过程中,我们充分发挥了团队合作的精神,每个人负责一个模块的设计和实现,然后进行整合和调试。
四、实习中遇到的问题及解决方法1、语法错误在编写汇编代码时,由于对语法规则的不熟悉,经常会出现语法错误。
例如,忘记在指令后面添加操作数、寄存器的使用错误等。
对于这些错误,我们通过仔细检查代码和参考教材中的语法规则,逐步找出并改正了错误。
8086汇编语言程序设计 微机实验报告

微机实验报告第一部分:8086汇编语言程序设计一、实验目的通过上机练习,初步掌握8086的指令系统,熟悉8086汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用DEBUG调试工具。
二、实验题目(一)编程实现从字符串中查找特定的字符,记录特定字符的个数,并将结果在屏幕上显示,同时退出并返回DOS。
(要求字符串从键盘上输入)1、流程图2、实验程序及注释DATA SEGMENTBUFSIZE DB 20 ;数据段ACTCHAR DB ? ;定义字符串CHARTEXT DB 20 DUP(?) ;给输入字符分配内存DB '$'CNT DB 0 ;给计数器分配内存STRING1 DB 'PLEASE INPUT THE STRING:','$'STRING2 DB 0AH,0DH,'INPUT THE WORD YOU WANT TO CHECK:','$' STRING3 DB 0AH,0DH,'THE NUMBER OF THE WORD IS:','$'DATA ENDS ;数据段结束COSEG SEGMENT ;代码段ASSUME CS:COSEG,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRING1 ;显示提示语:请输入字符串MOV AH,09H ;输出字符串STRING1INT 21HMOV DX,OFFSET BUFSIZE ;从键盘输入字符串存入BUFSIZEMOV AH,0AH ;并送显INT 21HMOV DX,OFFSET STRING2 ;显示提示语:想查询的字符是MOV AH,09H ;输出字符串STRING2INT 21HMOV AH,01H ;从键盘上输入字符到AL中并送显INT 21HMOV BX,OFFSET CHARTEXT ;将字符串首地址存入BXMOV CL,ACTCHAR ;置循环次数CX=字符串长度XOR CH,CHLP1: CMP AL, [BX] ;字符串从头开始与键入字符AL比较JZ LP2 ;相等则转入LP2INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,继续循环LP1JMP FINI ;若全部比较完毕,跳转FINILP2: INC CNT ;计数器增一INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,跳至LP1 FINI: MOV DX,OFFSET STRING3 ;显示提示语:所查询的字符个数:MOV AH,09HINT 21HMOV AL,CNT ;将计数器的值送ALAAM ;将此值转换成非压缩BCD码ADD AH,30H ;将BCD码转换为ASCⅡ码MOV DL,AH ;高位送显MOV AH,02HINT 21HMOV AL,CNT ;再将计数器的值送ALAAMADD AL,30H ;将BCD码转换为ASCⅡ码MOV DL,AL ;低位送显MOV AH,02HINT 21HMOV AH,4CH ;结束INT 21HCOSEG ENDS ;代码段结束END START ;程序结束3、运行结果PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): A↙THE NUMBER OF THE WORD IS(数量为):3↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符):9↙THE NUMBER OF THE WORD IS(数量为):0↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): S↙THE NUMBER OF THE WORD IS(数量为):1↙4、程序改进○1循环次数的改进原来的程序:MOV CX,19改进原因:此程序表明无论输入的字符串多长,即使没有达到限定的最大字符串的长度,也要循环19次。
微机汇编语言编程系统实验报告

微机系统实验报告实验一汇编语言编程实验一、实验目的(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功能调用四、实验步骤(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)掌握不同进制数及编码相互转换的程序设计方法。
微机原理(单片机汇编)实验报告

软件实验报告软件实验一一、实验目的1.熟悉软件实验的基本步骤和汇编程序的调试方法;2.了解内存块的移动方法;3.了解将十六进制数转换成ASCII值的方法。
二、实验原理用MOV和MOVX指令可以进行数据的赋值和移动,用循环可以完成大量数据的复制。
三、实验内容及步骤1、软件设置为模拟调试状态,在所建的Project文件中添加例程1的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。
打开CPU窗口,观察CPU窗口各寄存器的变化。
打开View菜单中的Memory Window,可以观察内部RAM、外部RAM的数据和程序存储器中的程序。
在Address窗口输入X:8000H后回车,观察8000H-800FF起始的256个字节单元的内容。
2、新建一个Project文件,添加例程2的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。
打开View菜单中的Memory Window,在Address 窗口的Memory#1输入X:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,观察外部RAM3000H和4000H中的内容。
3、添加将片内30H-3FH单元的内容复制片外片外1030H~103FH中的源程序,编译运行,观察比较30-3FH单元中的内容和片外1030H-103FH中的内容。
4、添加将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中的源程序,编译运行,观察结果。
5、添加求内部RAM 30H—37H单元中8个无符号数的算术和的源程序,8个无符号数设定为25H,36H,4AH,65H,7FH,82H,9BH,1DH,观察39H,38H中的数字是否分别为02H,C3H。
四、实验结果1.步骤1的结果为8000H-80FFH的内容都为1.2.步骤2的结果为3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。
汇编语言设计(微机实验报告)

一、实验名称:汇编语言设计二、实验目的:1.熟悉 MASM.EXE 和 LINK.EXE 的使用方法。
2.了解 debug 调试工具,观察程序的执行过程和对寄存器和内存单元的影响。
三、实验内容1、首先在硬盘上建立一个文件夹E:\MASM。
2、下载 MASM.EXE 和 LINK.EXE 到E:\MASM 文件夹里。
3、经过以上两步,已经做好了准备工作,接下来书写程序。
计算y = a × b + c - 18,a、b、c均为带符号的8 位二进制数据,为了实验观看实验结果,假设 a = 34H、b = 56H、c = E7H。
程序源代码如下(分号后面内容为注释内容,可以不输入):CC EQU 18 ;伪指令定义CCSTACK SEGMENT ;堆栈段起始DW 256 DUP(?) ;在堆栈段中预留了256 个字的内容TOP LABEL WORD ;TOP 为栈顶偏移地址STACK ENDS ;堆栈段结束DATA SEGMENT ;数据段起始DAT1 DB 34H ;DAT1为题中操作属数a,为字节,存于数据段中DAT2 DB 56H ;DAT2 为题中操作书b,为字节,存于数据段中DAT3 DB 0E7H ;DAT3 为题中操作书c,为字节,存于数据段中DATY DW ? ;DATY为题中计算结果预留空间,为字,存于数据段中DATA ENDS ;数据段结束CODE SEGMENT ;代码段起始ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段地址对应关系START: MOV AX,DATA ;START为标号,MOV语句将DATA数据段地址送AX MOV DS,AX ;将AX内容送入DS,赋予DS数据段DATA段地址MOV AX,STACK ;将STACK堆栈段地址送入AXMOV SS,AX ;将AX内容送入SS,赋予SS堆栈段STACK的段地址MOV SP,OFFSET TOP ;SP设初值MOV AL,DAT1 ;取a,直接寻址方式MOV BL,DAT2 ;取b,直接寻址方式IMUL BL ;AX <- AL * BL,即将a * b 的值存入AXMOV BX,AX ;将AX 内容保存至BXMOV AL,DAT3 ;取c,直接寻址方式CBW ;由于c 是8位有符号数,所以做符号扩展至AHADD AX,BX ;AX <- AX + BX,完成将a*b+c结果存入AX操作SUB AX,CC ;AX <- AX - 18MOV DATY,AX ;将a*b+c-18的值,存放至数据段中偏移地址DATY的内存中MOV AH,4CH ;将4CH存入AH,为了下句调用DOS 21号中断INT 21H ;调用DOS 21中断,由AH=4CH决定返回DOS操作系统CODE ENDS ;代码段结束END START ;程序结束将以上代码保存为扩展名为.ASM 的文件的方法如下:点击“开始”菜单“运行”notepad,打开记事本程序,在记事本中输入如上代码。
汇编语言实验报告

汇编语言实验报告实验一汇编语言的源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置2.学习在DEBUG状态下输入汇编源程序的方法3.初步掌握调试(在DEBUG状态下)的过程二、实验原理1.本实验在DEBUG状态下输入汇编源程序,并且用DEBUG命令进行调试,用单步跟踪的方法试验指令的功能;2.以下是给定的参考程序,并在实验时每条指令的“;”等号右边按要求填写指令的分析结果。
三、实验步骤1.开机后进入DOS系统2.用DEBUG的REGISTER命令检查所有寄存器内容,并作记录R[寄存器名]3.用DEBUG的ASSEMBLE命令输入汇编源程序A[内存地址]4.用DEBUG的UNASSEMBLE命令反汇编U[起始地址][终止地址]5.用DEBUG的TRACE命令单步跟踪程序T[起始地址][终止地址]6.用DEBUG的DUMP命令显示存贮器单元的内容四、参考程序及结果MOV AX,2000 ;AL=00MOV DS,AX ;DS=2000NOT AX ;AX=DFFFXOR AX,AX ;AX=0000DEC AX ;AX=FFFFINC AX ;AX=0000MOV BX,2030 ;BH=20MOV SI,BX ;SI=2030MOV [SI],BL ;[2030H]=30MOV WORD PTR[SI],10F ;[2030H]=0F [2030H]=01 MOV DI,SI ;DI=2030MOV [DI+50],BH ;[DI+50]=20MOV BH,[SI] ;BH=0FMOV BL,[DI+50] ;BL=20MOV SP,5000PUSH AX ;AX=0 [SS:4FFEH]=00H [SS:4FFFH]=00H PUSH BX ;BX=0F20 [SS:4FFCH]=20H [SS:4FFDH]=0FH POP AX ;AX=0F20POPF ;F=00000000NEG BX ;BX=F0E0XCHG BX,AX ;BX=0F20STD ;F=01010001STI ;F=01110001CLD ;F=00110001CLI ;F=00010001ADC DI,2050 ;DI=4081 F=00000010ADC SP,DI ;SP=9081 F=10010010ADC AX,1500 ;AX=05E0 F=00000001SUB AX,BX ;AX=F6C0 BX=0F20SHL AH,1 ;AH=ECRCL AX,1 ;AX=D981SHR BX,1 ;BH=07RCR BL,1 ;BL=90MOV CL,4MOV DX,80F0ROL DX,CL ;DX=0F08 CL=04INT 20 ;CS=00A7 IP=1072实验二数据的建立与传送程序一、实验目的1.学习DEBUG命令2.验证指令的功能二、实验原理在DEBUG状态下,输入程序,用G命令进行连续方式执行程序,用DUMP命令查看建立的数据块内容三、参考程序及结果1.在内存1000单元开始,建立00H~0FH~00H 31个数,要求00H~0FH数据逐渐增大,0FH~00H逐渐减小,程序从内存CS:0100H地址开始输入MOV AX ,100HMOV DS ,AXMOV SI,0MOV CL ,0FHXOR AX,AXPPE1: MOV [SI] ;ALINC SI ;INC ALDEC CLJNZ PPE1MOV CX,10HPPE2:MOV[SI],ALINC SIDEC ALLOOP PPE2INT 20H数据块的内容1000:0000:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:0100:0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 002.把上一程序的执行结果分几种方式传送到以下指定区域(a)该程序从内存CS:0150H开始输入,把数据块传送到15050H 开始的存储区域中MOV AX,1000HMOV DS,AXMOV SI,0MOV DI,5050HMOV CX,1FHPPEA: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP PPEAINT 20H结果:1000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(b)用串传送指令MOVSB,把数据块传送到15150H开始的区域,该程序从内存CS:0200H开始输入MOV AX,100HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5150HMOV CS,1FHCLDPPEB: MOVSBLOOP PPEBINT 20H结果:1000:5150 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5160 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(C)用重复串操作指令”REP MOVSB”把数据传送到15250H开始的区域,该程序从CS:250H地址开始输入MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5250HMOV CX,1FHCLDREPZMOVSBINT 20H结果:1000:5250 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5260 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(c)用串操作的减量工作方式,把数据传送到25050H开始的区域,该程序从CS:0300H开始输入MOV AX,1000HMOV DS,AXADD AX,AXMOV ES,AXMOV SI,1EHMOV DI,506EHMOV CX,1FHSTDREP MOVSBINT 20H结果:2000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00实验四统计学生成绩程序一、实验目的进一步掌握分支程序和循环程序的编写方法二、实验原理设有10个学生的成绩分别为56,69,84,82,73,88,99,63,100和80分。
微机原理及应用-汇编语言上机实验报告

西南石油大学实验报告实验一一、实验目的熟悉汇编语言的上机过程,掌握各项工具软件的使用方法二、实验内容1.硬件:PC微机2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE三、实验过程1.前期准备:在开始进行汇编语言上机练习之前,建立并进入自己的工作子目录,准备好相关工具软件如MASM.EXE、LINK.EXE等,其后所有工作均在自己的子目录中进行,以避免因路径概念不清而导致的文件存取错误,以及对系统其它部分造成影响。
2.编写源程序:原则上可以用任何文字处理软件(如EDIT、写字板、甚至WORD)编写源程序,但必须注意,源程序应为ASCII码文件(或称纯文本文件),扩展名一般为.ASM。
因此,建议使用DOS环境下的EDIT软件。
3.汇编:利用MASM.EXE宏汇编程序,将已经存盘的ASCII码源程序翻译成二进制目标程序,其扩展名一般为.OBJ。
4.连接:利用LINK.EXE连接程序,将二进制目标程序整理成DOS系统下的可执行程序,其扩展名必须为.EXE。
5.运行:四、实验内容1、从键盘输入一个字符,进行大小写互换后显示。
源程序:结果:2、输入两个个位数字相加并显示结果。
代码:结果实验二一、实验目的:学习利用DEBUG调试程序的基本思想及方法二、实验环境:1.硬件:PC微机2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE三、实验内容与过程:利用DEBUG调试程序,可以将一个可执行程序(如.EXE、.COM等)装入内存中,并接管对程序运行的控制权,通过采取如反汇编、断点运行、单步执行、寄存器内容修改等方法,对可执行程序进行跟踪、调试,以找出其中的设计错误,然后再对源程序进行相应修改,重新生成正确的可执行程序。
1.准备被调试程序:假定所有有关文件均在当前路径C:\MYTEST>下,按照实验一的步骤生成一个被调试的可执行程序(如TEST.EXE)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机系统实验报告实验一汇编语言编程实验一、实验目的(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功能调用四、实验步骤(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)掌握不同进制数及编码相互转换的程序设计方法。
(2)掌握运算类指令编程及调试方法。
(3)掌握循环程序的设计方法。
二、实验设备PC机一台。
三、实验内容及说明(1)重复从键盘输入不超过5位的十进制数,按回车键结束输入;(2)将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;(3)如果输入非数字字符,则报告出错信息,重新输入;(4)直到输入“Q”或‘q’时程序运行结束。
(5)键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。
考核方式:完成实验内容(1)(2)(3)(4)通过,完成实验内容(5)优秀。
转换过程参考流程如图3-2-2所示。
十进制数可以表示为:D n*10n+D n-1*10n-1+…+D0*100=∑D i*10i其中D i代表十进制数1、2、3、…、9、0。
上式可以转换为:∑ D i*10i=(((D n*10+D n-1)*10+ D n-2)*10+…+ D1)*10+ D0由上式可归纳出十进制数转换为二进制数的方法:从二进制数的最高位D n开始做乘10加次位的操作。
依此类推,则可求出二进制数结果。
表3-3-1 数码转换对应关系四、实验程序; PAGE 60,132;本实验将输入的ASCII码转换为二进制,要求输入位数小于5DATA SEGMENTMES DB 0AH,0DH,'The Ascii code of Decimal code are: $' MSG1 DB 0AH,0DH,0AH,0DH,0AH,0DH,'Please Input(Exit:q/Q):$'MSG2 DB 0AH,0DH,'Input: $'MSG3 DB 0AH,0DH,'Input Error, Please input again!',0AH,0DH,'$';BIN DB 2 DUP(0)BUF DB 30H,30H,30H,31H,35HDB 10H DUP(0)N DW 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV DI,OFFSET BUFCLCMOV DX,OFFSET MSG1MOV AH,09H ;显示字符串INT 21HMOV DX,OFFSET MSG2MOV AH,09HINT 21HA1: MOV AH,01H ;接收键盘输入INT 21HCMP AL,'Q'JZ EXITCMP AL,'q'JZ EXITCMP AL,39HJA ERRORINC NSTOSB ;将输入数据存放在BUF缓冲区中CMP AL,13JNE A1MOV CX,NDEC CXMOV BX,000AHMOV SI,OFFSET BUFMOV AH,0MOV DX,0LODSBCMP CX,1JE A3SUB AL,30H ;将BUF中数据转换为二——十进制数DEC CXA2: IMUL BXMOV DX,AXLODSBMOV AH,0A3: SUB AL,30HADD AX,DXLOOP A2MOV [SI],AXMOV DX,OFFSET MESMOV AH,09HINT 21HINC SI ;显示高字节CALL SHOWDEC SI ;显示低字节CALL SHOWMOV N,0LOOP STARTSHOW PROC NEARMOV 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,06HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;show characterMOV AH,06HINT 21HRETSHOW ENDPEXIT: MOV AX,4C00HINT 21HERROR: MOV DX,OFFSET MSG3 MOV AH,09HINT 21HJMP STARTCODE ENDSEND START五、实验结果实验三基本IO口扩展实验一、实验目的了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。
二、实验内容说明74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。
其引脚图如下:74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。
其引脚图如下:本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连接到发光二极管显示。
具体实验内容如下:(1)当开关Yi为低电平时对应的发光二极管点亮,Yi 为高电平时对应的发光二极管灭。
(2)当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。
(3)当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。
(4)自主设计控制及显示模式,完成编程调试,演示实验结果。
编程方法见IO(样例程序).txt.(在编译环境下程序名后缀为.asm且不能含有汉字)考核方式:完成实验内容(1)(2)(3)通过。
完成实验内容(4)优秀三、实验原理图图3-2-1 74LS244与74LS273扩展I/O口原理图实验连线图:图3-2-2 扩展I/O口连线图四、实验步骤(1)实验连线:➢244的CS——ISA总线接口模块的0000H,Y7—Y0——开关K1—K8。
➢273的CS——ISA总线接口模块的0020H,Q7—Q0——发光二极管L1—L8。
➢该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。
➢该模块的数据(AD0~AD7)连到ISA总线接口模块的数据(LD0~LD7)。
(2)编写实验程序,编译链接,运行程序(3)拨动开关,观察发光二极管的变化。
五、实验程序1、笨方法实现(主要代码):START: MOV AX,MY_DATAMOV DS,AXMOV AX,MY_STACKMOV SS,AXLOP: MOV DX,0DF00HIN AL,DXCMP AL,00HJE C0CMP AL,0FFHJE C3;JE EXITMOV DX,0DF20HOUT DX,ALJMP LOPC0: MOV AL,0FEHJMP C1C3: MOV AL,07FHJMP C2C1: ;ROL AL,1;MOV DX,0DF20H;OUT DX,AL;CALL DELAY;CALL BREAK;JE C1;JE EXIT;JMP C1;MOV AL,0FCH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FDH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FBH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0EFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0DFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0BFH MOV DX,0DF20H OUT DX,AL CALL DELAYCALL BREAKMOV AL,07FH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FFH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKCALL DELAY CALL BREAKJMP LOP;CALL DELAY;CALL BREAKIN AL,DXCMP AL,080HJMP EXITC2:MOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKMOV AL,0BFHMOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKMOV AL,0DFHMOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKMOV AL,0EFHMOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0F7H MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FBH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FDH MOV DX,0DF20H OUT DX,AL CALL DELAY CALL BREAKMOV AL,0FEHMOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKMOV AL,0FFHMOV DX,0DF20HOUT DX,ALCALL DELAYCALL BREAKCALL DELAYCALL BREAKJMP LOPIN AL,DXCMP AL,080HJMP EXIT EXIT: MOV AH,4CHINT 21H2、循环左移右移实现:主要代码:(1)右移:LOP: MOV DX,0DF00HIN AL,DXCMP AL,0FFHJE C0;JE EXITMOV DX,0DF20HOUT DX,ALJMP LOPC0: MOV AL,07FHJMP C1C1: ROR AL,1MOV DX,0DF20HOUT DX,ALCALL DELAYcall break;CMP AL,0FEH;JE EXITJMP C1IN AL,DXCMP AL,080HJMP EXIT(2)循环左移:LOP: MOV DX,0DF00HIN AL,DXCMP AL,00HJE C0;JE EXITMOV DX,0DF20HOUT DX,ALJMP LOPC0: MOV AL,0FEHJMP C1C1: ROl AL,1MOV DX,0DF20HOUT DX,ALCALL DELAYcall break;CMP AL,0FEH;JE EXITJMP C1IN AL,DXCMP AL,080HJMP EXIT实验四可编程并行接口8255实验一、实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。