汇编与接口实验参考文档
汇编语言与接口技术实验报告
汇编语言与接口技术实验报告学院:信息与电子工程学院专业:班级:学号:姓名:浙江科技学院2012-2013学年第1学期实验1 汇编语言程序设计一、实验目的1. 熟悉MASM 6.11汇编语言程序开发环境。
2. 掌握汇编语言程序的调试方法和常用的调试工具。
二、实验内容1. 安装MASM 6.11。
2. 设在内存中首地址为BLOCK的区域存有一批数据:61H,84H,93H,0C4H,17H,0FFH,52H,2AH。
分别按下列要求编写汇编语言程序:(1) 视该批数据为8位无符号数,采用冒泡法将其按升序排序;(2) 视该批数据为8位有符号数,采用冒泡法将其按升序排序。
三、实验要求1. 根据实验内容编写程序。
2. 上机调试程序。
3. 记录并分析程序运行结果。
五、程序代码1. 8位无符号数冒泡法排序程序如下:.model small.datan dw 8block db 61h,84h,93h,0c4h,17h,0ffh,52H,2ah .stack 60h.code.startupmov ax,@datamov ds,axmov cx,ndec cxloop1: mov dx,cxmov bx,0loop2: mov al,block[bx]cmp al,block[bx+1]jna continuexchg al,block[bx+1]mov block[bx],alcontinue: add bx,1loop loop2mov cx,dxloop loop1.exitend2、8位有符号数冒泡排序程序如下.model small.datan dw 8block db 61h,84h,93h,0c4h,17h,0ffh,52H,2ah .stack 60h.code.startupmov ax,@datamov ds,axmov cx,ndec cxloop1: mov dx,cxmov bx,0loop2: mov al,block[bx]cmp al,block[bx+1]jle continuexchg al,block[bx+1]mov block[bx],alcontinue: add bx,1loop loop2mov cx,dxloop loop1.exitend六、程序运行结果及分析在命令行debug,反汇编找到初始程序入口0017查看cup寄存器的内容实验2 系统中断接口实验一、实验目的1. 熟悉可编程中断控制器8259A的使用方法。
汇编程序及接口技术实验报告
微机汇编程序及接口技术实验报告汇编程序实验:一、实验目的1、熟悉汇编程序调试过程2、掌握算术运算指令运用3、掌握分支程序的编程和调试方法二、实验设备80X86微型计算机三、实验内容1、编程并调试显示“Hello Word!”字符串的汇编程序TITLE HELLODA TA SEGMENTSTR DB'Hello World!$'DA TA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRMOV AH,9HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START2、A、B、C、D、W是互不相等的在数据段中定义的16位有符号数,并假设加减运算不产生溢出。
编写一个完整段定义的汇编语言程序,计算W=(A+B)×(C—D)。
title asmprogram1_1DA TA SEGMENTA DW 1HB DW 3HC DW 4HD DW 2HW DW 2 DUP(?)DA TA ENDS;CODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV AX,AADD AX,BMOV BX,CSUB BX,DIMUL BXMOV W,AXMOV W+2,DXMOV AH,4CHINT 21HCODE ENDSEND START3、设X、Y为在数据段中定义的有符号字变量。
编写一个完整段定义的汇编语言程序(包含必要的伪指令,给出必要的注释)完成以下操作:若0<X且Y<1000,则AX=2000,BX=0;否则AX=0,BX=2000。
STACKS SEGMENT STACK;DEFINE STACKDW 128 DUP(?)STACKS ENDSDA TAS SEGMENTX DW 11HY DW 22HDA TAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXSUB X,0JNG L1SUB Y,1000JAE L1JMP L2L1:MOV AX,2000MOV BX,0L2:MOV AX,0MOV BX,2000MOV AH,4CHINT 21HCODES ENDSEND START4DA TA SEGMENTBLOCK1 DW 1200H,2000H,3200H,0H,5612H,23H,45H,89H,09H,10H BLOCK2 DW 100 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART:MOV AX,DATAMOV DS,AXLEA SI,BLOCK1LEA DI,BLOCK2MOV CX,100REPT:MOV AX,[SI]CMP AX,0JZ NEXTMOV [DI],AXADD DI,2NEXT:ADD SI,2LOOP REPTMOV AH,4CHINT 21HCODE ENDSEND START5DA TA SEGMENTBLOCK1 DW 1200H,2000H,3200H,0H,5612H,23H,45H,89H,09H,10H BLOCK2 DW 100 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART:MOV AX,DATAMOV DS,AXLEA SI,BLOCK1LEA DI,BLOCK2MOV CX,100REPT:MOV AX,[SI]CMP AX,0JZ NEXTMOV [DI],AXADD DI,2NEXT:ADD SI,2LOOP REPTMOV AH,4CHINT 21HCODE ENDSEND START微机原理及接口技术实验:实验一 8255并行接口实验一、实验目的1、学习并掌握8255的工作方式及其应用。
汇编实验报告_wwb
汇编第一次集中实验报告要求:实验一:汇编语言运行环境及方法、简单程序设计1、绘制程序流程图2、结合你的调试过程,整理其中用到的debug命令的使用方法和效果截图,并解释每一步骤的结论Debug中常用到的指令有:用—g命令来运行程序;用—u命令来显示程序;用—d查看数据段情况;用—e或—f命令来修改需要改正的部分;用—t指令来逐步执行程序;用—r指令来查看寄存器和修改器的值;用—q命令用来退出debug程序。
在这些命令的后面加上地址,可以将命令执行到相应的地方。
实验代码:DSEG SEGMENTSTRING1 DB 'move the cursor backward'STRING2 DB 'move The cursor backward'MESS1 DB 'Match!',0DH,0AH,'$'MESS2 DB 'No match!',13,10,'$'DSEG ENDSCSEG SEGMENTMAIN PROC FARASSUME CS:CSEG,DS:DSEG,ES:DSEGSTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DSEGMOV DS,AXMOV ES,AXLEA SI,STRING1LEA DI,STRING2CLDMOV CX,24REPZ CMPSBJZ MATCHLEA DX,MESS2JMP SHORT DISPMATCH:LEA DX,MESS1DISP:MOV AH,9INT 21HRETMAIN ENDPCSEG ENDSEND STAR-g命令运行程序:-用u命令显示程序:将端点设置在程序的主要部分以前。
-g0b:根据其中指示的ds寄存器内容查看数据段的情况如下:-d0可用可用e命令修改数据区的字符串,操作如下:由图可知,已把0020行中backward改为了forward了。
完整word版,汇编实验报告,推荐文档
实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求: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 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: 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.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。
汇编程序及接口技术实验报告
汇编程序及接口技术实验报告
一、实验目的
本实验的主要目的是了解汇编语言程序的编写和调试方法,并掌握接口技术的应用。
二、实验内容
1.编写一个求给定数的阶乘的汇编程序。
2.利用串口实现汇编程序的输入输出。
三、实验步骤
1.阅读8086汇编语言的使用手册,了解汇编语言的基本语法和指令集。
2.编写一个求阶乘的汇编程序。
程序的基本思路是利用循环和累加的方法来实现阶乘的计算。
3.编写串口输入输出的汇编程序。
使用串口的输入输出功能,实现程序与外部设备的交互。
4.将阶乘程序与串口输入输出程序进行整合,测试程序的功能是否正常。
五、实验结果与分析
经过调试和测试,本实验成功实现了求阶乘的功能,并能通过串口与外部设备进行交互。
实验结果与预期一致。
六、实验总结
通过本次实验,我对汇编语言的编写和调试方法有了更深的了解。
同时,我们也学会了如何利用接口技术来实现程序与外部设备的交互。
这对我们以后的学习和工作都将有很大的帮助。
接口与汇编实验报告3——IO接口实验
大连理工大学软件学院《接口与汇编》实验报告姓名:学号:班级:姓名:学号:班级:组号: 5 实验箱编号:实验时间:2012年3月21日实验室:嵌入式实验室实验台:Embest Edukit-III平台指导教师:侯刚成绩:实验三:IO接口实验一、实验目的和要求题目:IO接口实验实验目的1. 学习单片机的I/O口的使用方法。
2. 学习延时子程序的编写和使用。
实验要求1.P0口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2. 用汇编代码设计程序,完成8个LED等的循环闪烁,循环五次后,进行全灭全亮闪烁,时间间隔500ms.二、实验原理和内容实验内容:用汇编代码设计程序,完成8个LED等的循环闪烁,循环五次后,进行全灭全亮闪烁,时间间隔500ms.实验原理:1.使用定时器进行计时。
根据所给开发板上的晶振频率,计算出计时器所付初值,设置计时器TO在模式下工作,每次计时100ms五次计时后,转入流水灯中断处理程序。
2.流水灯的实现采用带进位标识位循环左移,根据开发板原理图判断P0口初值为1则不量,设置P0口初值为#0FFH,进位标志位清零,计时器每计时500ms,P0循环左移一位。
3.采用寄存器R0,初值为06H,计数5次循环闪烁后,彩灯全亮全灭,进入下一轮循环闪烁。
三、主要仪器设备及软件编程环境主要仪器:计算机编程软件,51电路开发板编程环境:uVision2 ,progisp烧写软件四、实验步骤与编程实验步骤:编写代码,编译,调试,烧写,完成实验。
编程:ORG 0000HRESET: LJMP MAINORG 000BHLJMP IT0PORG 1000HMAIN: MOV SP,#60HMOV R0,#05;500MS___MOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHMOV A,#0FFHMOV R2,#06HMOV R3,#08HCLR CSETB TR0SETB ET0SETB EAHERE: SJMP HEREIT0P: MOV TL0,#0B0HMOV TH0,#3CHDJNZ R0,LOOP3 ;R0不为0,中断返回MOV R0,#05H ;R0为0,重置R0DJNZ R3,LOOP2 ;R3不为0,循环左移(R3原来为8)MOV R3,#08H ;R3为0,证明一次循环结束DJNZ R2,LOOP3 ;R2不为0,还需循环左移,中断返回;R2为0,五次循环结束MOV P0,#0FFHMOV P0,#00HMOV R2,#06HRETILOOP2: RLC AMOV P0,ALOOP3: RETIEND五、实验数据与结果分析八位彩灯实现了循环闪烁(由于采用定时器编写,不会仿真,所以无截图)。
汇编实验报告(详细版)
计算机组成与汇编语言(实验报告)内容: 实验一、六、七、八院系专业:计算机学院计算机科学与技术姓名:xxxxxxxxx学号:*******xxxxx完成时间:2012年12月1日计算机组成与汇编语言实验报告printf("输入的二进制数不正确!!");break;}}}if(a[15]=='1')s++;for(i=1;i<16;i++){if(a[15-i]=='1')s+=(1<<i);}printf("二进制: ");puts(a);printf("对应的十进制为: ");printf("%d\n",s);}程序1运行结果:实验情况与体会:运行过程中出现过不能判断是否输错的情况以及权位判断有误等情况,经过思考和修改后修改正确,说明理解好二进制与十进制之间的转换过程很重要。
编程过程中主要碰到的问题是,不够十六位的时候要在前面补零。
转换方法主要是除二求余的方法。
注:篇幅不够,可以另外附页。
计算机组成与汇编语言实验报告姓名xxxx 学号2011004xxxx 计分专业软件工程班级xxxxx 实验日期2012年 12 月 1日实验名称实验六分支结构程序设计实验目的●熟悉有符号定点数的表示。
●掌握原码、补码、反码之间的相互转换程序设计。
实验内容说明:该程序中X=23,Y=45,他们之差的绝对值为22,用16进制表示为0016H,即图中显示的结果2.调试程序2:DATA SEGMENTADD AL, 07HLP4: ADD AL, 30H ;将低四位转化为相应的ASCII码并以字符形式输MOV DL, ALMOV AH, 2INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START上机运行该程序并检查运行结果是否正确。
上机实验过程:说明:求出三个数里面的最大数73;3. 编写程序1:编程实现从键盘输入一位数字,判断其奇偶性,并在屏幕上输出一个标志,若为奇数,则输出1,否则输出0。
汇编语言实验报告
实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATA BEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤(1)编写源程序。
汇编语言实验报告
汇编语言实验报告一、实验目的本次汇编语言实验的主要目的是通过实际操作和编程实践,深入理解汇编语言的基本概念、指令系统和编程方法,提高对计算机底层硬件操作的认识和编程能力。
二、实验环境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 指令进行移位操作。
汇编语言与接口技术实验指导书V1.1
经过以上的工作,到此就可以编译程序了。点击菜单Project选项,在弹出的下拉菜单中选择Build Target命令对源程序文件进行编译,此时会在“Output Windows”信息输出窗口输出一些相关的信息。由提示信息可知:第一行Build Target‘Target1’表示此时正对工程1进行编译操作,第二行Compiling hello.c表示此时正在编译hello.c源程序,第三行lingking...表示此时正在连接工程项目文件,第五行Creating hex file from‘hello’说明已生成目标文件hello.hex,而最后一行说明hello.uvproj项目在编译过程中不存在错误和警告,编译连接成功。若在编译过程中出现错误,系统会给出错误所在的行和该错误提示信息,用户应根据这些提示信息,更正程序中的错误,重新编译直至完全正确为止,至此我们所需的目标代码hello.hex文件已经生成,用户可以使用相关的软件把该程序代码下载到试验仪的单片机中,复位系统后单片机将全速运行用户的程序。
第 2 章
2.1
如上图,首先选择“Keil关联设置”页面,点击“添加MCU型号到Keil中”,在出现的如下面的目录选择窗口中,定位到Keil的安装目录(一般可能为“C:\Keil\”),“确定”
若出现下面的提示框,表示安装成功
2.2
若第一步的驱动安装成功,则在Keil中新建项目时选择芯片型号时,便会有“STC MCU Database”的选择项
6.输入完毕后点击菜单的File选项,在弹出的下拉菜单中选择“保存”命令存盘源程序文件,这时会弹出如下图所示的存盘源程序画面,在文件名栏内输入源程序的文件名,在此示范中把Text1保存成hello.c。主要Keil C51支持汇编和C语言,且uVision4要根据后缀判断文件的类型,从而自动进行处理,因此存盘时应注意输入的文件名应带扩展名.ASM或.C。源程序文件hello.c是一个c语言程序,如果用户想建立的是一个汇编程序,则输入文件名称hello.asm。保存完毕后请注意观察,保存前后源程序有哪些不同,关键字变成蓝颜色了吗?这也是用户检查程序命令行的好方法,您体会到了吗?
汇编实验【范本模板】
汇编语言实验报告学号:姓名:提交日期:成绩:【实验编号】 1【实验名称】用机器语言和汇编语言编程【实验内容】(1).使用Debug,将上面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中的内容变化.机器码汇编指令B8 20 4e mov ax,4e20h05 16 14 add ax,1416hBb 00 20 mov bx,2000h01 d8 add ax,bx89 c3 mov bx,ax01 d8 add ax,bxB8 1a 00 mov ax,001ahBb 26 00 mov bx,0026h00 d8 add al,bl00 dc add ah,bl00 c7 add bh,alB4 00 mov ah,000 d8 add al,bl04 9c add al,9ch(2)。
将下面的3条指令写入从2000:0开始的内存单元中,利用这三条指令计算2的8次方. mov ax,1add ax,axjmp 2000:0003(3).查看内存中的内容PC机主板上的ROM中写有一个生产日期,在内存fff00h~ffffffh的某几个单元中,请找到这个生产日期并试图改变它。
试图将09/07/10修改为12/12/12因为为之都寄存器,所以只能读而不能修改。
(4)。
向内存从B8100开始的单元中填写数据,如:-e b810:0000 01 01 02 02 03 03 04 04填写不同的数据,观察现象现象:不同的数据所呈现出的图形是不一样的,但其出现在屏幕上的位置是没变的.改变填写的地址,观察产生的现象现象:改变所存储的位置,所产生的图像是不变的,但其出现在屏幕上的位置发生了变化。
【实验编号】 2【实验名称】汇编语言程序的编写过程【实验目的】1.掌握汇编语言程序的编写、编译、链接、执行过程;2。
了解程序分段的目的和意义;【实验内容】(1).使用debug,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空. mov ax,ffffmov ds,axmov ax,2200mov ss,axmov sp,0100mov ax,[0] ;ax=5BEAadd ax,[2] ;ax=5CCAmov bx,[4] ;bx=30F0mov bx,[6] ;bx=6029push ax ;sp=00FE;修改的内存单元的地址是2200:FE和2200:FF内容为5CCApush bx ;sp=00FC;修改的内存单元的地址是2200:FC和2200:FD内容为6029pop ax ;sp=00FE;ax=6029pop bx ;sp=0100;bx=5CC0push [4];sp=00FE;修改的内存单元的地址是2200:FE和2200:FF内容为30F0 push [6] ;sp=00FC;修改的内存单元的地址是2200:FC和2200:FD内容为2F39【实验编号】 3【实验名称】编程、编译、连接、跟踪【实验内容】(1)。
汇编与接口实验1
实验系统简介
3.快捷键使用说明 打开调试窗口 CTRL+1 打开示波器窗口 CTRL+2 打开寄存器窗口 CTRL+3 复制 CTRL+C 终止运行或调试 CTRL+C 新建文件 CTRL+N 打开文件 CTRL+O 打印文件 CTRL+P 保存文件 CTRL+S 粘贴 CTRL+V1
M0
1=设置屏蔽 0=解除屏蔽
OCW1命令字
实验一 中断特性及8259中断应用实验
系统启动时,8259A被初始化,其初始 化是通过系统中的初始化程序设置初始化 命令字ICW来实现的。系统初始化时,规定 0#和4#中断源分别提供给实时钟和与PC 微机联机的串口通讯,用户可以使用其余 的中断源。在进入监控后,只有4#中断源 处于开启状态,其他中断源都被屏蔽了。 中断矢量地址与中断号之间的关系如 下表所示。
实验一 中断特性及8259中断应用实验
实验步骤 1.按图连接实验电路。 2.编写程序并检查无误,经汇编、连接后装入系统。 3.G=0000:2000↙,运行实验程序。(注意:程序中 8259中断矢量地址为绝对地址,已定义为段地址 CS=0000H,偏移量地址IP=2000H,故装载时一定按此 填入CS与IP地址,后面实验不再重述)。 4.重复按动KK2+微动开关,显示屏上显示“7”,直到按 10次后,系统处于停机状态,用CTRL+C返回监控。
实验一 中断特性及8259中断应用实验
8259A的编程,就是根据应用需要将初 始化命令字ICWI—ICW4和操作命令字 OCWl—OCW3分别写入初始化命令寄存器 组和操作命令寄存器组。 8259A的初始化命令字ICW见下表:
ICW1 D0 各 D1 位 D2 含 D3 义
汇编语言与接口技术实验
班级:计科143 姓名:张磊学号:20141111095实验成绩:课程:汇编语言与接口技术实验六同组者:肖洋,马畅实验日期:实验六显示接口实验一、实验目的1. 了解数码管动态显示与静态显示区别2. 掌握数码管动态显示控制原理3. 掌握数码管动态显示编程二、实验原理图6.1 LED数码管显示电路图6.1为实验板数码管显示电路,本实验板所用数码管为共阴极型,需要显示的数据通过74HC573进行锁存。
图中U6是数码管位选锁存器,数据通过数据总线送至U6后,经SEGLE(P27)进行置位实现锁存;U7是数码管段选码输出,段选码通过数据总线送至U7后通过DIGLE(P26)置位进行锁存。
三、实验内容使用定时器T0中断方式设计一个时钟表,用两位数码管分别显示时、分、秒。
1)分析本实验控制原理,画出程序流程图。
2)根据实验要求,编写系统程序,并在实验板上进行调试;班级:计科143 姓名:张磊学号:20141111095实验成绩:课程:汇编语言与接口技术实验六同组者:肖洋,马畅实验日期:四、实验分析及源程序#include "STC/STC15F2K60S2.H"#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit WEI_LATCH=P2^7;//数码管位选驱动锁存器锁存控制端sbit DUAN_LACTH=P2^6;//数码管段选驱动锁存器锁存控制端sbit LED_LATCH = P2^5;//led驱动锁存器控控制端sbit I2C_SCL = P2^0;sbit I2C_SDA = P2^1;uchar g_sec = 0;//存储秒uchar g_min = 0;//存储分uchar g_hour = 0;//存储小时uint int_time;//定时标志uchar uc_SegTable[] = //段选码{0x3f,0x06,0x5b,0x4f, /* 0、1、2、3 */0x66,0x6d,0x7d,0x07, /* 4、5、6、7 */0x7f,0x6f,0x77,0x7c, /* 8、9、A、B */0x39,0x5e,0x79,0x71, /* C、D、E、F */0x80,0x40,0x00 /* . 、- */};uchar uc_DigTable[] =//位选码{0xfe,0xfd,0xfb,0xf7,班级:计科143 姓名:张磊学号:20141111095实验成绩:课程:汇编语言与接口技术实验六同组者:肖洋,马畅实验日期:0xef,0xdf,0xbf,0x7f};void timer0_init();//定时器0初始化void DisplaySeg(uchar uc_SegDuan,uchar uc_SegWei,uchar uc_PointDisp);//数码管显示函数void Delay();//延时函数void TubeDisplay();//显示时间void main(){timer0_init();//定时器0初始化LED_LATCH = 1;P0 = 0xff;//消除LED干扰LED_LATCH = 0;//E2ReadByte(0x00);while(1){if(TR0 == 1)//时钟正常运行时显示时间TubeDisplay();//将时间显示到数码管}}void timer0_init(){TMOD=0x01;TH0=(65536-50000)/256; //=50000微秒=50毫秒班级:计科143 姓名:张磊学号:20141111095实验成绩:课程:汇编语言与接口技术实验六同组者:肖洋,马畅实验日期:TL0=(65536-50000)%256;EA=1; //开启总中断ET0=1; //打开定时器0中断TR0=1; //打开定时器0}void interserve(void ) interrupt 1{TR0=0; //关闭定时器T0int_time ++;if(int_time==20) //够20次中断,即1秒钟进行一次检测结果采样{int_time=0; //中断次数清0g_sec++; //秒加1if(g_sec==60){g_sec =0; //秒等于60就返回0,分钟金伟g_min++;if(g_min==60)//分等于60就返回0,小时进位{g_min=0;g_hour++;if(g_hour==24)//到24小时清0{g_hour=0;}}}班级:计科143 姓名:张磊学号:20141111095实验成绩:课程:汇编语言与接口技术实验六同组者:肖洋,马畅实验日期:}TH0=(65536-46083)/256; //重新给计数器T0赋初值TL0=(65536-46083)%256;TR0=1; //启动定时器T0}void DisplaySeg(uchar uc_SegDuan,uchar uc_SegWei,uchar uc_PointDisp) {if(1 == uc_PointDisp){/* 将段显示出来*/P0 = uc_SegTable[uc_SegDuan] | 0x80;DUAN_LACTH = 1;DUAN_LACTH = 0;/* 选择某位*/P0 = uc_DigTable[uc_SegWei];WEI_LATCH = 1;WEI_LATCH = 0;}else{/* 将段显示出来*/P0 = uc_SegTable[uc_SegDuan];DUAN_LACTH = 1;DUAN_LACTH = 0;/* 选择某位*/班级:计科143 姓名:张磊学号:20141111095实验成绩:课程:汇编语言与接口技术实验六同组者:肖洋,马畅实验日期:P0 = uc_DigTable[uc_SegWei];WEI_LATCH = 1;WEI_LATCH = 0;}}void Delay()//简单延时函数{uchar uc_Delay = 200;while(uc_Delay--);}void TubeDisplay(){DisplaySeg(g_hour / 10, 0, 0);//显示小时的十位Delay();DisplaySeg(g_hour % 10, 1, 1);//显示小时的个位,带小数点Delay();DisplaySeg(g_min / 10, 2, 0);//显示分的十位Delay();DisplaySeg(g_min % 10, 3, 1);//显示分的个位,带小数点Delay();DisplaySeg(g_sec / 10, 4, 0);//显示秒的十位Delay();DisplaySeg(g_sec % 10, 5, 0);//显示秒的个位,带小数点Delay();}班级:计科143 姓名:张磊学号:20141111095实验成绩:课程:汇编语言与接口技术实验六同组者:肖洋,马畅实验日期:五、实验结果及结论使用定时器T0中断方式设计一个时钟表,用两位数码管分别显示时、分、秒。
微机接口实验报告汇编程序调试和简单接口编程
微机接⼝实验报告汇编程序调试和简单接⼝编程实验报告课程名称微机原理与接⼝技术实验项⽬实验⼀汇编程序调试和简单接⼝编程_实验仪器 TPC-USB通⽤微机接⼝实验系统系别_光电信息也通信⼯程学院_专业 ________通信⼯程________班级/学号__通信0801/2008010382__学⽣姓名 _________闫振宇_________实验⽇期 _______2011-4-28________成绩_______________________指导教师_______胡信裕__________⼀、实验⽬的1. 学习汇编程序设计的基本⽅法,掌握⽤汇编语⾔设计、编写、调试和运⾏程序的⽅法;2. 熟悉TPC-USB通⽤微机接⼝实验系统的使⽤操作;3. 掌握I/O地址译码电路的⼯作原理;⼆.实验设备1.PC微机系统⼀套2.TPC-USB通⽤微机接⼝实验系统⼀套三.实验要求1.实验前要作好充分准备,包括程序框图、源程序清单、调试步骤、测试⽅法、对运⾏结果的分析等。
2.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)使⽤⽅法。
在程序调试过程中,有意识地学习及掌握debug程序的各种命令,掌握程序的调试⽅法及技巧。
3.实验前仔细阅读理解教材相关章节、附录E等的相关内容,实验时必须携带教材及实验讲义。
四.实验内容及步骤1.运⽤⽂本编辑⼯具建⽴实验源程序⽂件(*.asm)功能要求:实验电路如图1所⽰,其中74LS74为D触发器,可直接使⽤实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执⾏I/O指令且地址在280H~2BFH范围内,译码器选中,必有⼀根译码线输出负脉冲。
图 1 实验电路连接参考图利⽤这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
汇编实验报告,(例文)
汇编实验报告,(例文)《汇编语言程序设计》实验报告2021年11月★★FGL实验一:汇编语言运行环境及方法、简单程序设计I:实验要求:1、绘制程序流程图2、结合你的调试过程,整理其中用到的debug命令的使用方法和效果截图,并解释每一步骤的结论3、调试中遇到的问题及解决方法 II:具体实验过程:a.程序流程图1、开始输入源程序根据实验步骤进行汇编比较string1与string2输出NO输出Match结束b.调试过程及debug命令使用方法·-u命令反汇编:·-g0b·-d0:查看数据段内容·-g:执行完程序显示结果根据数据段显示的数据内容可知,在;两字符串分别为"Movethecursorbackward."和"Movethecursordackward.",因而可根据debug命令中的-e将第二个字符串中的d修改为b则可使结果显示为MATCH!具体步骤如下:如下图所示,对内存中1436:0029的存储单元进行-e29命令修改的前后数据的显示,可看到已经将d修改为b,从而-g命令运行的结果是Match.(注:-a 和-f命令亦可修改数据区内容但使用时有一定的区别)·-q命令退出debug调试:·-t命令的单步调试:(该过程中IP不断变化着)实验二:用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等I:实验要求:1、任务1的指令序列2、整理本次试验中用到的debug命令的使用方法及效果截图II:实验目的:1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
3、掌握简单指令的执行过程。
III:实验内容:任务一、设堆栈指针SP=2021H,AX=3000H,BX=5000H;请编一程序段将AX 和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
汇编语言设计实验报告参考模板
南通大学计算机类课程实验报告MOV [Z],AX ;将最后的结果送给ZMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。
代码还不能灵活运用,编写代码有所困难。
解决办法:多试调试。
八、实验心得和建议对于DEBUG的追踪还不熟悉,不过在指导老师的认真教导下,我们渐渐了解了汇编语言。
也能读懂一些简单的汇编语言。
我觉得在以后的学习中,我们必须要加强汇编语言的学习力度。
在学习过程中,不仅要大量阅读源程序,分析其功能,而且要借鉴他人的经验,练习编写完成特定功能的源程序。
南通大学计算机类课程实验报告MOV AH,2INT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。
代码还不能灵活运用,编写代码有所困难。
解决办法:多试调试。
八、实验心得和建议第二次做汇编实验了,在心理上已没有了第一次做实验的那种茫然不知。
在实验中遇到的错误很多,并且无论怎样修改都还是不能使程序达到完美的状态的时候,情绪会比较不稳定,这时候才知道,编写程序除了有思路,有想法,有语言知识,还要有很强大的心理,要有耐心,才能去面对这一连串的错误。
在学习过程中,不仅要大量阅读源程序,分析其功能,而且要借鉴他人的经验,练习编写完成特定功能的源程序。
南通大学计算机类课程实验报告PUSH DXMOV DL,0AHMOV AH,2INT 21HPOP DXPOP AXRETCRLF ENDPCODE ENDSEND START(如不够,请另附纸)(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。
电子科技大学_汇编实验报告
电子科技大学计算机工程学院标准实验报告(实验)课程名称电子科技大学教务处制表电子科技大学实验报告实验一学生姓名:穆萨·图拉克学号:2012060090033 指导教师:实验地点:主楼A2-412 实验时间:19:00~一、实验室名称:二、实验项目名称:汇编源程序的上机调试操作基础训练三、实验学时:四、实验原理:(包括知识点,电路图,流程图)DEBUG 的基本调试命令;汇编数据传送和算术运算指令MASM宏汇编开发环境使用调试方法五、实验目的:1. 掌握DEBUG 的基本命令及其功能2. 学习数据传送和算术运算指令的用法3. 熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程六、实验内容:(介绍自己所选的实验内容)1. DEBUG命令的使用2. 程序的调试与运行3. 编写程序计算以下表达式:Z=(5X+2Y-7)/2设X、Y的值放在字变量V ARX、V ARY中,结果存放在字节单元V ARZ中。
七、实验器材(设备、元器件):WinXP PC机,MASM,50 ,VisulASM软件平台。
八、实验步骤:(编辑调试的过程)1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3.连接目标程序,产生可执行程序。
4.用DEBUG程序调试可执行程序,记录数据段的内容。
九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)程序说明:功能:本程序完成Z=(5X+2Y-7)/2这个等式的计算结果求取。
其中X 与Y是已知量,Z是待求量。
结构:首先定义数据段,两个DB变量VARX与VARY(已经初始化),以及结果存放在VARZ,初始化为?。
然后定义堆栈段,然后书写代码段,代码段使用顺序程序设计本程序,重点使用MOV和IMUL以及XOR,IDIV完成程序设计。
详细内容见程序注释。
程序清单:DATA SEGMENTVARX DB10VARY DB10VARZ DB?DATA ENDSSTACK SEGMENT PARA STACKSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN:MOV AX,DATAMOV DS,AXMOV AL,VARXMOV AH,VARYSAL AL,1SAL AL,1ADD AL,VARXSAL AH,1ADD AL,AHSUB AL,7SAR AL,1MOV VARZ,ALMOV AH,4CHINT21HCODE ENDSEND MAIN程序框图:结束调试说明:将汇编语言(.asm文件)通过masm命令转换为目标程序(.obj 文件),通过link命令转换为目标程序可执行程序(.exe文件); 这次试验还要用-p参数以及d参数显示结果为:十、实验结论:(联系理论知识进行说明)通过本次实验,我们学习了解掌握了DEBUG 的基本命令及其功能,学习了数据传送和算术运算指令的用法,熟悉了在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《汇编与接口第一次实验》
第一次实验
作业题目:
一、实验目的
1.进一步学习汇编语言基本指令使用方法;
2.学习DEBUG调试工具的基本使用方法;掌握debug调试命令a、u、r、d、t、g等
3.逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。
二、实验题目
1.编写、输入一个32位二进制数相加程序,逐条执行指令,观察指令执行情况。
2.使用已经过汇编和连接的小程序(t3-2.exe),将其装入内存,逐条执行指令,观察执行过程和结果。
在实验过程中,使用D命令修改XXX 和YYY单元中的数据,再重新计算其结果。
4、如果在一个程序开始执行之前(CS)=0A7F0H(如果十六进制数的最高位为字母,则应该在其前加1个0),(IP)=2B40H,试问该程序的第1个字的物理地址是多少?
一.实验第一部分
1. 启动计算机的WINDOWS操作系统,在开始菜单中找到“运行”,输入“cmd”后回车,启动ms-dos command程序,再在该程序
内输入“DEBUG”并按回车,即启动DEBUG调试程序。
2. 开始编程
在启动的debug程序里输入a命令进入编程功能
在编程部分逐条输入32位二进制数相加程序的指令,完成无符号数10000100H和1200ffffH的加法操作,程序的代码见图1:
图1,程序编写,r指令(执行前),u指令
对32位数的低16位操作时,存放初始地址是0AE1:0100,
使用U命令对代码进行反汇编我们可以看到对应地址中所存放的指令和他们对应的长度,可以看到MOV和ADD指令的的长度都是3,但ADC的指令长度为4,因为ADC指令中需要考虑进位CF所以比MOV和ADD多了一位长度,如上图。
使用r命令后,可以看到指令执行前各寄存器的内容,CS:IP的内容为0100,下一条执行的指令为MOV AX,0100,操作数寻址为立即数寻址,内存单元的值为0100H。
图2
使用t命令单步执行指令后,所得结果见上图2,执行过程中,CS:IP的内容随指令长度的变化依次增加,标志位寄存器只有PF,CF的值在计算过程中有变化,其中在两次CF的标志位CY时表示有进位发生,OF一直为NV,表明计算结果没有溢出。
图3
对程序使用r命令查看寄存器AX,DX的值,见上图3,可知,AX=00FF,DX=2201,CF=0,说明运算结果低16位为00FF,高16位为2201,无进位,即结果是220100FF,计算正确。
图 4
使用d命令查看程序运行过后的结果如上图4,可以看到,内存单元的存放顺序是低地址放低字节,高地址放高字节,同时数据的存放是按顺序连续存放的,指令的存放与数据是同时的,都存放在连续的内存地址中。
图5
使用e命令对内存单元的内容进行修改,再次运行程序,可见结果也有了相应的改变。
如下图。
图6
使用g指令再次运行程序,可以看到运算结果也相应改变。
图7
二.实验第二部分
图8
将写的asm文件转化成exe文件,如上图
图9
运行debug程序,u命令进行反汇编,查看程序内容,运行r命令查看寄存器内容和下一条将要执行的内容,由于这里我们并没有开始运行程序,因此寄存器的内容都为原初始内容,如上图。
图10
t指令运行程序,如上图,可以看到IP的值在对应着我们u命令查看的指令的地址进行递增。
在这几步中标志位发生变化有ZF和PF,其中在XOR DX DX时两个相同的数进行异或操作结果是零因此结果是零,所以ZF=ZR。
其中[0000]是间接寻址。
图11
继续运行指令,在这几步中,我们可以看到,在上一步的结尾的ADD AX AX可以看到AX变为2468(1234+1234),ADD DX DX 的结果仍然是ZR(零)。
在上图中的OF标识符发生变化,原因是ADD AX AX 命令后AX寄存器的数值的最高位(符号位发生改变)。
继续运行指令,在这几步的运行过程中,ADD AX AX,后由于符号位改变所以OF = OV,因为产生进位,因此进位标志CF = CY,结果是2348 进1。
将AX中的数据存入0004指向的内存单元中
最后我们将DX中所存数据(进位次数)存入0006指向的内存单元中。
分析整个过程,可以看到我们将AX中的数值增大了16倍之后加上Y并用DX寄存器储存进位,最后分别将高低位储存在相邻的高地字节中。
即实现运算为:Z=X*2^4+Y。