汇编与接口实验参考文档

合集下载

汇编语言与接口技术实验报告

汇编语言与接口技术实验报告

汇编语言与接口技术实验报告学院:信息与电子工程学院专业:班级:学号:姓名:浙江科技学院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

汇编实验报告_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版,汇编实验报告,推荐文档

完整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接口实验

接口与汇编实验报告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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档