微机原理与应用实验报告_2(汇编语言源程序的建立调试和运行)
- 格式:docx
- 大小:47.56 KB
- 文档页数:4
此实验报告是我二人进行讨论后共同编写,其中主要负责写实验一、四、六部分,主要负责写实验二、三、五部分。
实验一(1)一.实验内容:实现Hello World!程序。
二.实验目的:掌握汇编语言源程序的结构;掌握汇编语言源程序的输入、编译、调试方法。
三.实验总体思路:编写程序,在数据段定义字符串’ Hello World!’,调用DOS功能号09H,显示出来。
四.实验步骤:编写代码,编译,运行。
DATAS SEGMENTstringDB 'Hello World!',13,10,'$'DATAS ENDS;…………………………………………………………………………STACKS SEGMENTSTACKS ENDS;…………………………………………………………………………CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXLEA dx,stringmov ah,9int 21h;…………………………………………………………………………MOV AH,4CHINT 21HCODES ENDSEND START五.实验结果:在屏幕上显示出了’ Hello World!’。
六.实验结果表现形式:图1.1(2)一.实验内容:编程实现Z=5X+3Y+10。
二.实验目的:掌握表达式计算程序设计,观察段寄存器、通用寄存器的变化。
三.实验总体思路:编写程序,实现表达式Z=5X+3Y+10,最终结果采用顺序输出每位的数,调用DOS功能号09H,显示出来四.实验步骤:编写代码,编译,运行。
DATA SEGMENTX DB 10Y DB 20Z DW ? ;此处输入数据段代码TY DB 3 DUP(?)DB '$'DATA ENDS;…………………………………………………………………………STACKS SEGMENTSTACKS ENDS ;…………………………………………………………………………CODES SEGMENTASSUME CS:CODES,DS:DATA,SS:STACKSSTART:EXPRE PROC FARPUSH DSSUB AX,AX ;PUSH AXMOV AX,DATAMOV DS,AX ;…………………………………………………………………………XOR AX,AXXOR BX,BXMOV AL,XMOV CL,5MUL CLMOV BL, YADD BL,BLADD BL,YADD AL,BLADD AL,0AHMOV Z,ALMOV CL, 64HDIV CLADD AL,30HMOV TY, AL ;分解一次;…………………………………………………………………………MOV AL, AHMOV AH,0MOV CL, 0AHDIV CLADD AL,30HADD AH,30HMOV TY+1, AL;分解两次MOV TY+2, AH;分解三次;…………………………………………………………………………MOV DX,OFFSET TYMOV AH,09HINT 21HRETEXPRE ENDPMOV AH,4CHINT 21HCODES ENDSEND START五.实验结果:因为定义X=10,Y=20,所以在屏幕上显示出了120。
实验一汇编语言的编译、链接和调试一、实验目的1、学会使用masm对汇编源程序进行编译、链接、调试、运行。
2、掌握汇编语言的程序格式。
3、巩固所学的汇编语言指令。
二、实验环境1、硬件:PC 微机2、软件:宏汇编MASM 软件三、实验原理1、汇编语言程序的上机与处理过程2、汇编语言的程序格式(1)汇编程序一般由若干段组成,每个段都有一个名字,以SEGMENT作为段的开始,以ENDS作为段的结束,这两者前要冠以相同的名字作为段名。
(2)代码段和堆栈段必不可少,数据段和附加段可根据需要设置。
堆栈段的SEGMENT之后有关键字STACK。
代码段中有伪指令ASSUME告诉汇编程序,在各种指令执行时所要访问的各段寄存器将分别对应哪一段。
(3)源程序的每一段是由若干行汇编语句组成,每一行只有一条语句,且不能超过128个字符,但一条语句允许有后续行,最后均以回车结束。
(4)整个源程序必须以END语句结束,它通知汇编程序停止汇编。
四、实验内容进入DOS环境中相应的目录下。
如汇编软件的文件来为:D:\MASM,则对应的操作为(1)选择windows的“开始”→“程序”→“附件”→“命令提示符”(2)在DOS命令提示符下输入如下命令(其中带下划线部分为输入内容)。
C:\Documents and Settings\new>D:D:\>CD MASMD:\MASM>EDIT TEXT.ASM进入编辑程序,在其环境下输入编好的源程序,然后在盘上生成一个扩展名为.asm的文件。
程序示例DATA SEGMENTDA1 DB 10H,20H,30H,40HDA2 DB 0F0H,0B0H,0A0H,90HDA3 DB 00H,00H,00H,00HDATA ENDSSTACK1 SEGMENT PARA STACKDB 10 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AL,[DA1]ADD AL,[DA2]MOV [DA3],ALMOV AL,[DA1+1]ADC AL,[DA2+1]MOV [DA3+1],ALMOV AL,[DA1+2]ADC AL,[DA2+2]MOV [DA3+2],ALMOV AL,[DA1+3]ADC AL,[DA2+3]MOV [DA3+3],ALCODE ENDSEND START3. 用宏汇编程序MASM,将扩展名为.ASM的源程序汇编成目标程序,即生成盘上扩展名为.OBJ的文件。
微机原理及应用实验报告实验一单片机仿真开发机操作和MCS-51指令系统应用一、实验目的1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整;2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编;3、掌握程序的调试和运行的各种方法。
二、实验说明1.输入给定程序,配置选项,调试并运行程序,观察程序控制下寄存器的变化。
2.选中此项keil为纯软件仿真。
3.编写程序上机调试通过,实验报告要求提交程序流程图及源程序。
三、实验内容及步骤(完成分值:60分)本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真(不需要连接仿真器就可以仿真)。
1.新建工程项目2.设置工程文件参数3.编写新程序事例4.调试程序直至能够运行出结果。
四、参考实验程序AJMP MAINORG 0030HMAIN: MOV R0,#20HMOV R2,#0FHMOV A,#00HA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0,#20H ;暂停,观察并记录!MOV DPTR,#7000HMOV R2,#0FHA2: MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R2,A2MOV R0,#030H ;断点,观察并记录!MOV DPTR,#7000HMOV R2,#0FHA3: MOVX A,@DPTRMOVX @R0,AINC R0INC DPTRDJNZ R2,A3DO: LJMP DOEND ;内部存储器数据块赋值,搬运数据块到外部存储器,再搬运回内部数据存储器。
五、附加题(完成分值:10分/单个附加题,附加题要求当场给指导老师检查结果,否则无效。
其中1、2、3附加题要求写在实验报告上)1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光标处”功能,程序快速执行到光标所在行。
观察运行情况,并记录下表。
R0 R2 A 20H 21H 22H 23H 24H 25H2FH 00H 0FH 00H 01H 02H 03H 04H 05H26H 27H 28H 29H 2AH 2BH 2CH 2DH 2EH06H 07H 08H 09H0AH 0BH 0CH 0DH 0EH2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元内容R0 DPL 7000H 7001H 7002H 7003H 7004H 7005H 7006H2FH 01H 0FH 01H 02H 03H 04H 05H 06H7007H 7008H 7009H 700AH 700BH 700CH 700DH 700EH07H 08H 09H 0AH 0BH 0CH 0DH 0EH3.画出程序流程图4.修改程序,实现新功能(例如搬运数据时实现倒序,变成对应的BCD码,请自行考虑与别人不同的功能,同组同学已经实现过的功能不算新功能)答:由程序可知,子程序Al产生数据,子程序A2将产生的数据搬运至7000H开头的地址,子程序A3将7000H开头的地址搬运至30H开头的地址。
微机原理及应用的实验报告1. 实验介绍在本次实验中,我们将学习微机原理及应用的基本知识,并通过实践来深入理解和应用这些知识。
本实验旨在让我们熟悉微机系统的原理、组成部分以及在实际应用中的一些常见问题和解决方案。
2. 实验目的•了解微机系统的基本组成部分•掌握微处理器的工作原理和操作方法•学习使用汇编语言编写简单的程序•熟悉实验中常用的开发工具和调试技术3. 实验步骤1.首先,我们需要了解微机系统的基本组成部分。
微机系统主要由中央处理器(CPU)、内存、输入输出设备和总线组成。
其中,CPU是微机系统的核心部件,它负责执行程序的指令和处理数据。
内存用于存储程序和数据,输入输出设备用于与外部环境进行数据交互,总线则负责连接各个部件之间的数据传输。
2.接下来,我们将学习微处理器的工作原理和操作方法。
微处理器是CPU的核心组成部分,它由运算器、控制器和寄存器组成。
运算器负责执行各种算术和逻辑运算,控制器负责控制程序的执行流程,寄存器用于保存指令、数据和中间结果。
3.在实验中,我们将学习使用汇编语言编写简单的程序。
汇编语言是一种低级语言,它与机器语言直接相对应。
通过编写汇编程序,我们可以更加直观地了解指令的执行过程以及数据的处理方式。
同时,在实验中我们还将学习如何使用调试工具对程序进行调试和测试。
4.最后,我们将熟悉实验中常用的开发工具和调试技术。
在实验中,我们将使用一些开发工具如汇编器、编译器和调试器来编写、编译和调试程序。
同时,我们还将学习如何使用逻辑分析仪和示波器等调试工具来对程序进行分析和验证。
4. 实验结果通过本次实验,我对微机原理及应用有了更深入的了解。
我学会了微机系统的基本组成部分,了解了微处理器的工作原理和操作方法,并且能够使用汇编语言编写简单的程序。
同时,我还熟悉了实验中常用的开发工具和调试技术,能够使用它们来进行程序的编写、编译和调试。
通过实验,我对微机系统的原理和应用有了更加直观和深入的认识。
北京工业大学微机原理实验报告2微机原理实验报告—实验二熟悉汇编程序建立及其调试方法姓名:学号:一、实验目的1、熟悉汇编语言源程序的框架结构,学会编制汇程序。
2、熟悉汇编语言上机操作的过程,学会汇编程序调试方法。
二、实验内容1、学习编写汇编语言源程序的方法,了解数据存放格式。
2、阅读给出的程序,找出程序中的错误。
3、通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和运行等全过程。
三、实验预习1、阅读实验指导第一章的内容,了解汇编语言程序建立、汇编、链接、调试的全过程。
2、下面的汇编语言源程序有错误的,试给程序加注释。
通过调试手段找出程序中的错误并修改之。
写出程序的功能,画出程序流程图。
(1)程序修改前:STACKSG:SEGMENT PARA STACK ‘STACK’ ;不能有冒号DB 256 DUP(?)STACKSG ENDSDATASG: SEGMENT PARA ‘DATA’;不能有冒号BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000COUNT EQU 20MAX DW ?DATASG ENDSCODESG: SEGMENT ;不能有冒号ASSUME SS:STACKSG , CS:CODESGASSUME DS:DATASGORG 100HBEGIN MOV DS, DATASG ;BEGIN: 应改为MOV AX , DATASG MOV DS, AX LEA SI ,BLOCKMOV CX, COUNTDEC CXMOV AX , [SI]CHKMAX ADD SI,2 ;应加冒号CHKMAX: CMP [SI] , AXJLE NEXTMOV AX , [SI]DEC CX ;删除NEXT: LOOP CHKMAXMOV MAX ,AXMOV AH, 4CHINT 21HCODESG ENDSEND BEGIN(2)程序修改后:STACKSG SEGMENT PARA STACK ‘STACK’DB 256 DUP(?)STACKSG ENDSDATASG SEGMENT PARA ‘DATA’BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000COUNT EQU 20MAX DW ?DATASG ENDSCODESG SEGMENTASSUME SS:STACKSG , CS:CODESGASSUME DS:DATASGORG 100HBEGIN MOV AX , DATASGMOV DS, AXLEA SI ,BLOCKMOV CX, COUNTDEC CXMOV AX , [SI]CHKMAX:ADD SI,2CMP [SI] , AXJLE NEXTMOV AX , [SI]NEXT: LOOP CHKMAXMOV MAX ,AXMOV AH, 4CHINT 21HCODESG ENDSEND BEGIN(3)程序注释:STACKSG SEGMENT PARA STACK 'STACK'DB 256 DUP(?)STACKSG ENDS ;定义堆栈段DATASG SEGMENT PARA 'DATA' ;数据段定义BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512DW 23,56,420,75,0,-1024,-67,39,-2000 ;定义变量BLOCK包含20个字COUNT EQU 20 ;COUNT=20MAX DW ? ;定义字变量MAX并不赋值DATASG ENDSCODESG SEGMENT ;代码段定义ASSUME SS:STACKSG , CS:CODESG ;说明STACKSG是堆栈段ASSUME DS:DATASG ;CODESG是代码段,DATASG是数据段ORG 100HBEGIN: MOV AX, DATASGMOV DS, AX ;DS指向DATASGLEA SI ,BLOCK ;取BLOCK的有效地址给SIMOV CX, COUNT ;CX=20DEC CX ;CX=CX-1MOV AX , [SI] ;将DS:[SI]里的值送到AX CHKMAX : ADD SI, 2 ;SI=SI+2CMP [SI] , AX ;比较DS:[SI]与AX值的大小JLE NEXT ;如果DS:[SI]的值小于AX里的值,则跳转到NEXT MOV AX , [SI] ;将DS:[SI]的值送到AXNEXT: LOOP CHKMAX ;循环CHKMAXMOV MAX ,AX ;将AX的值送到变量MAXMOV AH, 4CH ;结束INT 21HCODESG ENDSEND BEGIN(4)程序的流程图:Y NNY(5)程序的功能:找出20个数中的最大值并保存。
南理工微机实验报告篇一:南京理工大学微机实验报告微机实验报告实验2.1汇编语言程序的调试与运行思考题:1、带进位加法程序:DISP MACRO XMOV DL,XMOV AH,02HINT 21HENDMDATA SEGMENTDATA1 DB'65087'DATA2 DB'75087'N EQU $-DATA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1MOV BX,0MOV CX,NCALL DISPLDISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPLDISP '='LEA DI,DATA1MOV CX,NCALL ADDALEA SI,DATA1 MOV BX,0MOV CX,NCMP DL,0JZ NEXTDISP '1' NEXT: CALL DISPL DISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROCDS1:MOV AH,02H MOV DL,[SI+BX] INT 21HINC BXLOOP DS1RETDISPL ENDP ADDA PROCPUSH CXMOV BX,0AD1:SUB BYTE PTR [SI+BX],30H SUB BYTE PTR [DI+BX],30H INC BXLOOP AD1POP CXPUSH CXMOV BX,N-1CLCAD2:MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0MOV DL,0JNC AD3MOV DL,1AD3:ADD BYTE PTR [DI+BX],30HINC BXLOOP AD3POP CXRETADDA ENDPCODE ENDSEND START结果截图:2、上机步骤,调试方法:1、写代码完成功能要求,文件格式为.asm文件(如21si.asm),将文件放入带汇编工具的文件夹中,即含有汇编工具(MASM.EXE)和链接工具(LINK.EXE)的文件夹。
微机原理与接口技术课程作业班级:目录一、实验目的: (2)二、实验环境 (2)三、实验过程 (2)(一)基础知识储备 (2)(二)汇编语言程序设计 (2)(三)汇编程序调试 (2)四、调试实例 (2)(一)实例一 (2)(二)实例二 (2)(三)实例三 (2)(四)实例四 (2)五、实验总结 (2)(一)实验收获 (2)(二)实验感悟 (2)一、实验目的:汇编语言是一种用助记符表示的程序设计语言。
用汇编语言编写的源程序生成的目标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O 接口驱动等程序设计。
通过本次实验,熟练掌握汇编程序的调试,深入了解MASM汇编语言及其程序设计方法。
二、实验环境EDIT编辑器、MASM汇编程序、LINK连接程序、TD调试程序三、实验过程(一)基础知识储备1.了解微处理器80486的内部结构、寄存器组、工作模式等基本知识。
2.熟练掌握微处理器指令系统的相关知识,重点掌握80486的寻址方式和常用的指令格式及功能。
3.了解MASM汇编语言及其程序设计方法。
掌握MASM汇编语言的语句格式、语法规则、常用伪指令及DOS功能的调用等。
了解顺序结构、分支结构、循环结构和子程序的设计方法。
(二)汇编语言程序设计1.分析问题,明确要解决的问题和要求。
2.确定解决问题的思路和方法。
3.将解决问题的方案编制成程序流程图。
4.根据流程图,逐条编写程序。
5.上机调试,验证程序是否正确。
(三)汇编程序调试MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件;在转换过程中汇编程序将对源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法错误。
汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤:1.编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM 的汇编语言源文件*.ASM。
2.汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。
西华大学实验报告西华大学实验报告(理工类)开课学院及实验室:电气信息学院6A-217 实验时间:年月日装订线五、实验过程记录(数据、图表、计算等) assume ds:data,cs:code,es:datadata segmentbuffer1 db 1,2,3,4,5 ;定义字节buffer2 db 6,7,8,9,0 ;定义字节buffer3 db 100 dup(?) ;定义字节data endscode segmentmain proc farbegin:push dsmov ax,0000hpush axmov ax,datamov ds,ax ;初始化mov es,axlea si,buffer1 ;将buffer1的地址送给si lea bx,buffer2 ; 将buffer2的地址送给bx add bx,4 ;bx+4code segmentmainproc farassume cs:codego:mov si,300h ;将300h给simov di,400h ;将400h给dimov cx,50 ;将50给cxnext:mov al,[si] ;将[ds]:[si]处内存给al mov [di],al ;将al送到ds:[di]处inc di ;di+1dec cx ;cx-1jnz next ;cx不到0,跳到nextmov si,300h ;再将si给300hmov cx,50 ;cx赋予50cld ;清除方向标志位next1:lodsb ;将si处内存读到almov bl,al ;将al复制到blpush cx ;cx入栈lea di,buffer3 ;将buffer2的地址送给bxmov cx,5 ;循环次数m:mov al,[si] ;将ds:[buffer1]处的值给aladd al,[bx] ;al=al+ds:[buffer2+4]mov [di],al ;将al送给ds[buffer3]处inc si ;si+1dec bx ;bx-1inc di ;di+1dec cx ;cx-1jnz m ;cx>=0 则在m处循环mov ah,4c ;结束int 21hretmain endpcode endsend beginendinc si ;si+1mov cl,4 ;给cl赋4ror al,cl ;al循环右移4位pop cx ;cx出栈call disp ;调用disp子程序mov al,bl ;再将bl给alcall disp ;再次调用dispmov dl,' ' ;给dl赋予‘’mov ah,02 ;ah赋予02int 21h ;调用中断,显示字符loop next1 ;循环50次mov ah,4ch ;ah赋予4chint 21h ;调用中断,结束ret ;子程序返回main endp六、实验结果分析及问题讨论disp procand al,0fh ;屏蔽高4位cmp al,09h ;将al与9比较ja asc ;大于9跳到ascor al,30h ;小于9,加30hjmp do0 ;跳到doasc:add al,'A'-0ah ;al加‘a’到10的ASCII do0:mov dl,al ;将al送到dlmov ah,02 ;ah赋予02int 21h ;调用中断,显示字符ret ;子程序返回disp endpcode endsend go。
实验报告二课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名实验日期:2014 年 3 月10 日报告退发(订正、重做)一、实验目的学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。
二、实验内容1、学习使用全屏幕文本编辑软件EDIT。
用EDIT输入一段给定的源程序。
2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到EDIT进行修改。
3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE)4、在DOS提示符下运行该可执行文件。
[汇编语言程序的编写格式]汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。
任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。
段的定义有两种格式,分述如下:1,完整的段定义格式:一个段由段头,段体,段尾组成,形式如下:段名SEGMENT[定位类型][组合类型][‘类别’]……段名ENDS其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。
2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下:DOSSEG.MODEL 存储类型;“存储类型”可选择为SMALL。
.STACK[大小];堆栈段,“大小”指定堆栈的字节数。
.DATA;数据段。
.CODE[名字];代码段;一般只有一个代码段,名字可缺少……例1:用完整的段定义编写一源程序。
NAME EXAM1;可以省略DATA SEGMENT;定义数据段,以下是数据段的内容STR1 DB “HELLO,WELCOME!”,13,10,‘$’STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’STR3 DB “NICE!”,13,10,‘$’STR4 DB “SORRY!”,13,10,‘$’STR5 DB “UNKNOW,ANSWER AGAIN!(Y/N)”,DB 13,10,‘$’STR6 DB “SEE YOU NEXT TIME!”,13,10,‘$’DA TA ENDS ;数据段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE;DS:DATA;以下是代码段内容START:MOV AX,DA TA;给数据段寄存器赋值MOV DS,AXMOV AH,9;显示一字符串的功能号MOV DX,OFFSET STR1;显示字符串STR1的偏址INT 21H;DOS功能调用ASK :MOV DX,OFFFSET STR2;显示字符串STR2INT 21HMOV AH,1;键盘输入一字符的功能号INT 21H;键入的字符ASCⅡ码在ALNOT AL;求反TEST AL,‘Y’;是否按下‘Y’或‘y’键JE NEXT1TEST AL,‘y’JE NEXT1TEST AL,‘N’;是否按下‘N’键或‘y’键JE NEXT2TEST AL, ‘n’JE NEXT2MOV DX,OFFSET STR5;不是按上述键MOV AH,9INT 21HJMP ASK;再返回ASKNEXT1:MOV DX,OFFSET STR3;是按下‘Y’或‘y’键MOV AH,9INT 21HJMP BYENEXT2:MOV DX,OFFSET STR4;是按下‘N’或‘n’键MOV AH,9INT 21HBYE:MOV DX,OFFSET STR6INT 21HMOV DL,7;喇叭响的ASCⅡ码MOV AH,2INT 21HMOV AH,4CH;退回DOSINT 21HCODE ENDS;代码段结束END START;源程序结束注:源程序中的每一行注释语句前一定要加分号‘;’,下同。
《微机原理与应用》课程实验报告实验名称实验一两个多位十进制数相加实验姓名康吴伟系院专业电子科班级一班学号实验日期 4.14 指导教师毕翔,石雷成绩一、实验目的和要求目的:1.学习数据传送和算术运算指令的用法。
2.熟悉在PC 机上建立,汇编,连接,调试和运行汇编语言程序的过程。
要求:将两个多位十进制数相加,要求被加数,加数通过键盘输入后按顺序存放在以ADD1 和ADD2 为首的六个内存单元中(低位在前),结果送入SUM 为首的六个内存单元中。
假定计算的结果也是六位,否则算溢出,可不处理。
二、实验内容(包括实验步骤和代码)实验程序框图:三、实验结果及其分析《微机原理与应用》课程实验报告data SEGMENTts DB 'please input:$'again DB 0ah,0dh,'again?(y/n)$' data ENDScode SEGMENTASSUME CS:code,DS:dataenter1 PROCPUSH AXPUSH DXMOV AH,02hMOV DL,0dhINT 21hMOV DL,0ahINT 21hPOP DXPOP AX三、实验结果及其分析《微机原理与应用》课程实验报告实验名称实验三BCD 码相乘实验姓名康吴伟系院专业电子科班级 1 学号实验日期 4.28 指导教师毕翔,石雷成绩一、实验目的和要求目的:掌握用组合的BCD 码表示数据,并熟悉如何实现压缩的BCD 码乘法运算。
要求:实现BCD 码的乘法,要求被乘数和乘数要求以压缩的BCD 码形式存放,在内存中各占一个单元,乘积存放在另外两个内存单元中。
程序中可采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。
二、实验内容(包括实验步骤和代码)实验程序框图:程序语言:DA TA SEGMENTBCD1 DB 23HBCD2 DB 20HBCD3 DW ?《微机原理与应用》课程实验报告实验名称实验四从键盘输入数据并显示姓名康吴伟系院专业电子科班级 1 学号实验日期 5.5 指导教师毕翔,石雷成绩一、实验目的和要求目的:掌握键盘接收数据的方法,并了解将键盘数据显示时须转换为ASCII 码的原理,并在中设置错误出口。
.微机原理与接口技术课程作业班级:目录一、实验目的: (4)二、实验环境 (4)三、实验过程 (4)(一)基础知识储备 (4)(二)汇编语言程序设计 (4)(三)汇编程序调试 (5)四、调试实例 (5)(一)实例一 (5)(二)实例二 (7)(三)实例三 (10)(四)实例四 (12)五、实验总结 (14)(一)实验收获 (14)(二)实验感悟 (15)一、实验目的:汇编语言是一种用助记符表示的程序设计语言。
用汇编语言编写的源程序生成的目标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O 接口驱动等程序设计。
通过本次实验,熟练掌握汇编程序的调试,深入了解MASM 汇编语言及其程序设计方法。
二、实验环境EDIT编辑器、MASM汇编程序、LINK连接程序、TD调试程序三、实验过程(一)基础知识储备1.了解微处理器80486的内部结构、寄存器组、工作模式等基本知识。
2.熟练掌握微处理器指令系统的相关知识,重点掌握80486的寻址方式和常用的指令格式及功能。
3.了解MASM汇编语言及其程序设计方法。
掌握MASM汇编语言的语句格式、语法规则、常用伪指令及DOS功能的调用等。
了解顺序结构、分支结构、循环结构和子程序的设计方法。
(二)汇编语言程序设计1.分析问题,明确要解决的问题和要求。
2.确定解决问题的思路和方法。
3.将解决问题的方案编制成程序流程图。
4.根据流程图,逐条编写程序。
5.上机调试,验证程序是否正确。
(三)汇编程序调试MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件;在转换过程中汇编程序将对源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法错误。
汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤:1.编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM 的汇编语言源文件*.ASM。
2.汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。
实验报告课程名称实验日期学生专业学生学号学生姓名教师姓名成绩南京理工大学机械工程学院实验一DEBUG命令及其操作一、实验目的1.熟练掌握debug的常用命令,学会用debug来调试程序。
2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。
3.掌握各种寻址方法以及简单指令的执行过程。
二、实验要求1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。
2.本实验要求在PC机上进行。
3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。
三、实验内容实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。
答:1运行结果:.2.小结debug常用命令及使用体会a 汇编d显示内存单元内容e修改单元内存内容g执行命令t单步(或多步)调试n指定文件路径文件名(含扩展名)u反汇编r查看寄存器值及修改l加载程序w写盘命令体会:●实验内容2设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
实验报告要求:1.写出完成上述功能的程序段;2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值答:●实验内容3设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元装入0AH,0BH,0CH,0DH,0EH。
在DEBUG状态下送入下面的程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?A100 ;给各内存单元赋值Mov di,0300Mov dx,0aMov cx,51oop1:mov[di],dxInc diInc dx1oop loop1程序清单如下:寻址方式和AX的内容MOV BX,0300 立即寻址MOV SI,0002 立即寻址MOV AX,BX 寄存器寻址AX: 0300MOV AX,0304H 立即寻址AX:0304MOV AX,[0304H] 存储器直接寻址AX:ds:0304 内存单元的内容0EH MOV AX,[BX] 寄存器间接寻址AX:ds:0300 内存单元的内容0AH MOV AX,0001[BX] 基址相对寻址AX:ds:0301 内存单元的内容0BH MOV AX,[BX][SI] 基址变址寻址AX:ds:0302 内存单元的内容0CH MOV AX,0001[BX][SI] 基址变址寻址AX:ds:0303内存单元的内容0DH 实验内容4设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。
微机原理及应用实验报告班级:姓名:学号:中南大学机电工程学院精密测控实验室实验二软件程序设计1.实验目的:1、掌握MCS-51单片机指令系统及用汇编语言编程技巧;2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。
2.实验内容:1、编写排序程序并上机调试通过。
已知8031内部RAM60H~69H单元中,依次存放了FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。
2.、编写多字节加法程序并上机调试通过。
8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地址的区域中(低字节在前)。
3.实验设备名称、型号:4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单:程序1、编写排序程序并上机调试通过。
已知8031内部RAM60H~69H单元中,依次存放了FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。
解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。
如果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列了。
则可以退出循环,结束程序。
程序结构框图和程序代码如下:ORG 1000HTEM DATA 50HMOV R7 , #9MOV 60H , #0FFHMOV 61H , #99HMOV 62H , #77HMOV 63H , #0CCHMOV 64H , #33HMOV 65H , #0DDHMOV 66H , #88HMOV 67H , #0BBHMOV 68H , #44HMOV 69H , #0EEHLOOP0: CLR F0MOV A , R7MOV R6, AMOV R0 , #60HMOV R1, #60HINC R1LOOP1: MOV A , @R0MOV TEM , AMOV A , @R1CJNE A ,TEM , NEXTSJMP NOCHANEXT: JC NOCHASETB F0MOV @R0 , AXCH A , TEMMOV @R1 , ANOCHA:INC R0INC R1DJNZ R6, LOOP1JNB F0, HALDJNZ R7, LOOP0HAL: SJMP $END程序2:编写多字节加法程序并上机调试通过。
南理工微机实验报告篇一:南京理工大学微机实验报告微机实验报告实验2.1汇编语言程序的调试与运行思考题:1、带进位加法程序:DISP MACRO XMOV DL,XMOV AH,02HINT 21HENDMDATA SEGMENTDATA1 DB'65087'DATA2 DB'75087'N EQU $-DATA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1MOV BX,0MOV CX,NCALL DISPLDISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPLDISP '='LEA DI,DATA1MOV CX,NCALL ADDALEA SI,DATA1MOV BX,0MOV CX,NCMP DL,0JZ NEXTDISP '1'NEXT: CALL DISPLDISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROCDS1:MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROCPUSH CXMOV BX,0AD1:SUB BYTE PTR [SI+BX],30H SUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1CLCAD2:MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0MOV DL,0JNC AD3MOV DL,1AD3:ADD BYTE PTR [DI+BX],30H INC BXLOOP AD3POP CXRETADDA ENDPCODE ENDSEND START结果截图:2、上机步骤,调试方法:1、写代码完成功能要求,文件格式为.asm文件(如21si.asm),将文件放入带汇编工具的文件夹中,即含有汇编工具(MASM.EXE)和链接工具(LINK.EXE)的文件夹。
实验一(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所示。
西华大学实验报告
西华大学实验报告(理工类)
开课学院及实验室:电气信息学院6A-217 实验时间:年月日
装
订
线
五、实验过程记录(数据、图表、计算等) assume ds:data,cs:code,es:data
data segment
buffer1 db 1,2,3,4,5 ;定义字节
buffer2 db 6,7,8,9,0 ;定义字节
buffer3 db 100 dup(?) ;定义字节data ends
code segment
main proc far
begin:
push ds
mov ax,0000h
push ax
mov ax,data
mov ds,ax ;初始化
mov es,ax
lea si,buffer1 ;将buffer1的地址送给si lea bx,buffer2 ; 将buffer2的地址送给bx add bx,4 ;bx+4
code segment
mainproc far
assume cs:code
go:mov si,300h ;将300h给si
mov di,400h ;将400h给di
mov cx,50 ;将50给cx
next:mov al,[si] ;将[ds]:[si]处内存给al mov [di],al ;将al送到ds:[di]处
inc di ;di+1
dec cx ;cx-1
jnz next ;cx不到0,跳到next
mov si,300h ;再将si给300h
mov cx,50 ;cx赋予50
cld ;清除方向标志位
next1:lodsb ;将si处内存读到al
mov bl,al ;将al复制到bl
push cx ;cx入栈
lea di,buffer3 ;将buffer2的地址送给bx
mov cx,5 ;循环次数
m:
mov al,[si] ;将ds:[buffer1]处的值给al
add al,[bx] ;al=al+ds:[buffer2+4]
mov [di],al ;将al送给ds[buffer3]处
inc si ;si+1
dec bx ;bx-1
inc di ;di+1dec cx ;cx-1
jnz m ;cx>=0 则在m处循环
mov ah,4c ;结束
int 21h
ret
main endp
code ends
end begin
end
inc si ;si+1
mov cl,4 ;给cl赋4
ror al,cl ;al循环右移4位pop cx ;cx出栈
call disp ;调用disp子程序
mov al,bl ;再将bl给al
call disp ;再次调用disp
mov dl,' ' ;给dl赋予‘’
mov ah,02 ;ah赋予02
int 21h ;调用中断,显示字符
loop next1 ;循环50次
mov ah,4ch ;ah赋予4ch
int 21h ;调用中断,结束
ret ;子程序返回
main endp
六、实验结果分析及问题讨论disp proc
and al,0fh ;屏蔽高4位
cmp al,09h ;将al与9比较
ja asc ;大于9跳到asc
or al,30h ;小于9,加30h
jmp do0 ;跳到do
asc:add al,'A'-0ah ;al加‘a’到10的ASCII do0:mov dl,al ;将al送到dl
mov ah,02 ;ah赋予02
int 21h ;调用中断,显示字符
ret ;子程序返回
disp endp
code ends
end go。