微机汇编语言编程系统实验报告
- 格式:doc
- 大小:331.00 KB
- 文档页数:51
微机原理与汇编语言实验报告学号:********班级:*****姓名:*****指导教师:*****一.实验目的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汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用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)。
微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。
实验原理及操作步骤一、上机环境❖要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程❖汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序❖用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
❖无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编❖用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
❖汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。
❖汇编过程如下:❖在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。
❖此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。
Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。
如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。
此时,需要进行修改,然后再进行汇编。
❖如此进行,直至汇编无错误,得到目标文件为止。
3.连接❖汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
汇编语言实验报告一、实验目的本次汇编语言实验的主要目的是通过实际操作和编程实践,深入理解汇编语言的基本概念、指令系统和编程方法,提高对计算机底层硬件操作的认识和编程能力。
二、实验环境1、操作系统:Windows 102、编程工具:MASM(Microsoft Macro Assembler)三、实验内容1、数据传送与算术运算实现两个 16 位整数的加法和减法运算,并将结果存储在指定的内存单元中。
使用不同的数据传送指令,如 MOV、PUSH、POP 等,将数据在寄存器和内存之间进行传输。
2、逻辑运算与移位操作对给定的 8 位二进制数据进行逻辑与、或、异或运算,并观察结果。
执行移位操作,包括逻辑移位(SHL、SHR)和算术移位(SAL、SAR),理解移位对数据的影响。
3、分支与循环结构使用条件跳转指令(如 JZ、JE、JC 等)实现根据不同条件执行不同代码段的功能。
编写循环结构程序,如使用 LOOP 指令实现对数组元素的求和操作。
4、子程序调用定义一个子程序,实现特定的功能,如计算一个数的阶乘。
在主程序中调用子程序,并传递参数和获取返回值。
四、实验步骤1、数据传送与算术运算实验首先,在代码编辑器中编写汇编代码,定义数据段和代码段。
在数据段中初始化两个 16 位整数,例如 MOV WORD PTR DATA1, 1000H 和 MOV WORD PTR DATA2, 2000H 。
在代码段中使用 ADD 和 SUB 指令进行加法和减法运算,如 ADD WORD PTR RESULT_ADD, DATA1 和 SUB WORD PTRRESULT_SUB, DATA2 。
编译和链接代码,生成可执行文件。
运行程序,查看内存中存储的运算结果。
2、逻辑运算与移位操作实验类似地,定义数据段和代码段。
在数据段中初始化 8 位二进制数据,如 MOV AL, 01010101B 。
在代码段中使用AND、OR、XOR 指令进行逻辑运算,以及SHL、SHR、SAL、SAR 指令进行移位操作。
实验四汇编语言编程实验报告
专业:班级:学号:姓名:
一.实验目的
熟悉汇编语言的编辑(如、QE.EXE及记事本等),汇编(MASM.EXE),连接(LINK.EXE)以及调试(DEBUG.EXE)软件。
二.实验设备
硬件环境:IBM/PC及其兼容机
软件环境:操作系统DOS 2.0版本以上;
汇编语言的编辑程序(如EDIT、QE、Windows操作系统自带的记事本等)、
汇编程序程序MASM、连接程序LINK及调试程序DEBUG。
三.实验要求
1. 试按下列给定的公式编写程序:编写源程序,参照P232 x1,x2,x3,x4在16位二进制数的范围内,且有意义)
(3*X1-(X2*X3+7*X4-200))/X3
其中,X1, X2, X3, X4为16位带符号数的字变量。
计算结果的商存在AX中,余数存放在DX中。
2.用编辑软件生成扩展名为.ASM的源文件,如:TEST.ASM,ABC.ASM等;
3.用汇编程序MASM.EXE对已编辑的源文件进行汇编并生成扩展名为.OBJ的目标程序名,如:TEST.OBJ,ABC.OBJ等;
4.用连接程序LINK.EXE进行连接生成扩展名为.EXE的可执行文件,如:TEST.EXE,ABC.EXE等;
5.应用调试程序DEBUG.EXE的主要命令对所生成的可执行文件进行调试。
四.实验过程及结果:
1.汇编生成目标文件结果如下:
2.连接生成可执行程序结果如下:
3.调试结果FUN的值为:
四.课后设计题:1.源程序:
2.计算结果:。
汇编语言编程实验报告实验目的:使用汇编语言编写程序,实现特定功能。
实验过程和结果:1. 程序设计在本次实验中,我们使用汇编语言编写程序,实现了一个简单的计算器功能。
以下是我们设计的程序伪代码:```data segment; 定义数据段operand1 db ?operand2 db ?operator db ?result db ?data endscode segmentassume cs:code, ds:datastart:; 程序入口mov ax, datamov ds, ax; 获取用户输入mov ah, 01hint 21hmov operator, almov ah, 01hint 21hmov operand1, almov ah, 01hint 21hmov operand2, al; 根据运算符进行计算 cmp operator, '+'je addcmp operator, '-'je subcmp operator, '*'je mulje div; 显示结果mov dl, resultadd dl, 30h ; 转换为ASCII码 mov ah, 02hint 21h; 程序结束mov ah, 4chint 21hadd:; 加法运算mov al, operand1add al, operand2mov result, aljmp displaysub:; 减法运算mov al, operand1mov result, aljmp displaymul:; 乘法运算mov al, operand1mul operand2mov result, aljmp displaydiv:; 除法运算mov al, operand1mov ah, 0 ; 清空余数 div operand2mov result, aljmp display display:; 显示计算结果mov dl, resultadd dl, 30h ; 转换为ASCII码mov ah, 02hint 21h; 程序结束mov ah, 4chint 21hcode endsend start```2. 实验结果运行程序后,我们通过键盘输入运算符和操作数,程序能够正确地进行相应的运算并显示结果。
成绩:2计算机原理实验室实验报告课程:汇编语言与微机原理**:***专业:计算机科学与技术学号:*********日期:2013年12月太原工业学院计算机工程系实验一:输入输出实验3、思考内容(1)从键盘中输入和从从屏幕上输出的都是字符,和计算用的数据时间相差“0”即30H。
所以一个数从屏幕上输出时将+30H,输入时转换成数字-30H。
(2)单个字符,也就是CPU处理外设(键盘)的整个中断过程五.结论通过本次实验,完成了一位十进制数的加法运算,两位十进制数的和输出,一位十进制数的四则运算以及多位数运算的实验要求。
这次实验也让我熟悉了emu8086仿真系统,能够实现控制台的输入输出;也学会了如何去实现一位十进制数的加法运算还有两位十进制数的和输出以及一位十进制数的四则运算,知道了输入输出数据和计算用数据的区别,即)从键盘中输入和从从屏幕上输出的都是字符,和计算用的数据时间相差“0”即30H。
所以一个数从屏幕上输出时将+30H,输入时转换成数字-30H,还有单字符输入输出和串输入输出的不同。
实验二:分支程序实验2.扩展要求每次输出都换行实验三:循环程序实验lea si,datamov cx,time+1result:mov dl,[si]add dl,30hmov ah,2int 21hmov dl,' 'int 21hadd si,2loop resultjmp $time equ 4paixuqian dw 'paixuqian:','3','4','9','7','1','$'paixuhou dw 'paixuhou:','$'data dw 3,4,9,7,1四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)本次实验验证了实验基本要求,实现了直接选择排序和冒泡排序两种方法对五个字从大到小排序功能.1.直接选择排序结果:2.冒泡排序结果:3.思考内容:冒泡排序之所以能实现快速排序,是每一次排序都将最大或最小的放在最后或最前,并且有个来统计交换的次数,一旦交换的次数为0时直接退出循环。
实验一汇编语言上机环境及基本操作一、实验目的及要求1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验内容1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSSTACK SEGMENT STACK ’STACK’STA DB 10 DUP(?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。
图1 用EDIT编辑ABC.AS M程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。
)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。
4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。
如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。
一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。
将包含QE文件的工作磁盘插入驱动器A:。
进入QEA\QE进入全屏幕后可以开始编程。
文件名取为Myprog。
asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。
(此文档为word格式,下载后您可任意编辑修改!) 昆明学院课程设计(大作业)目录1题目分析 (5)2基本理论 (5)3 总体设计 (6)3.1 本程序的功能结构图 (6)3.2字符输入及存储设计 (8)3.3加、减、乘、除法运算的判断设计 (8)3.4加、减、乘、除法运算的设计 (9)4实验器材 (10)5方法步骤 (11)6成效分析 (11)6.1运行界面分析 (11)6.2调试过程及分析 (13)7心得体会 (14)8参考文献 (14)9附录 (14)课程设计(大作业)报告一、题目分析本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。
重点和难点主要包括以下几个方面:(1)利用BIOS调用中INT 16H调用中的子程序完成清屏、设置显示方式、设置窗口等操作。
(2)利用INT 21H DOS系统功能调用中的键盘输入接收十进制操作数和运算符由程序完成字符转换为二进制数,并存储起来。
(3)根据运算符完成运算,由程序在屏幕上显示运算结果。
1、十进制数转换为二进制数过程如下:(1)将BX清0.(2)从键盘接收一个按键的ASCII送AL中,并判断是否为0到9之间的字符,若不是转退出;否则将AL中内容减30H,转换为相应数字的二进制数,并扩展到AX中,然后将BX中内容乘以10后,再加上AX中的内容。
(3)转(2)继续执行因此程序退出后,BX中的内容即为所输入十进制数的二进制值。
例如:首先将BX清0后,先输入数字“5”,则(AL)=35H,属于0到9之间的数字,减30H后,(AL)=05H,扩展后,(AX)=0005H,BX乘以10后,加上AX中的内容,(BX)=0005H。
然后输入数字“8”,则(AL)=38H,属于0到9 之间的数字,减30H后,(AL)=38H,扩展后,(AX)=0008H,(BX)乘以10后,加上AX中的内容,(BX)=0037H,为十进制数“58”的二进制值。
《微机系统与汇编语言实验报告》8086汇编语言实验项目一(数值筛选)1.实验目的:进一步熟悉8086指令系统,运用并掌握汇编语言程序设计基本方法,编制能满足题目要求的数据处理类小规模程序。
并通过使用EDIT、MASM、LINK等软件工具,熟悉汇编语言程序书写、输入、编译、连接生成可执行程序的全过程。
进一步提高汇编语言程序调试和结果查找的能力。
2.基本要求:应用8086汇编语言程序设计方法,编制一个程序,使它能对10个字节型有符号常数作如下处理:1.在这10个常数中筛选出所有奇数,并存放到ODD开始的内存单元中;2.在这10个常数中筛选出所有偶数,并存放到EVE开始的内存单元中;3.对所筛选出的奇数、偶数分别求和,求和结果分别存放到每组数的结尾。
掌握用EDIT输入和保存8086汇编语言源程序、用MASM编译、用LINK连接生成可执行程序(EXE文件),并采用DEBUG调试运行自编程序,观察并记录程序运行的结果。
3.实验原理与方法:1.实验原理本实验项目需要运用8086汇编语言程序设计方法,而不是单纯地用DEBUG输入汇编语言指令来解决问题。
为了满足本实验的基本要求,程序中需要用到8086伪指令来定义数据区,用定义地址标识符伪指令来定义三个内存变量ORITAB、ODD、EVE,其长度都为10个字节。
这就建立了原始数据存储区、奇数结果存储区和偶数结果存储区。
在操作三个存储区前,通过“OFFSET<变量名>”运算,就能获取这三个存储区的首地址。
设置两个地址指针SI、DI,一个指向EVE存储区单元地址,另一个指向ODD存储区单元地址。
当找到符合偶数条件的数据时,就用SI在传送指令中对目的操作数形成“寄存器间接寻址方式”,把偶数传送到SI所指向的单元;当找到符合奇数条件的数据时,就用DI 在传送指令中对目的操作数形成“寄存器间接寻址方式”,把奇数传送到DI所指向的单元。
设置两个求和寄存器DH、DL,当找到奇数时,把它加到DH求和;当找到偶数时,把它加到DL求和。
微机系统实验报告实验一汇编语言编程实验一、实验目的(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的内部结构、工作方式、初始化编程及应用。