微机原理与应用实验报告_2(汇编语言源程序的建立调试和运行)
微机原理及应用实验报告

3•掌握各种寻址方法以及简单指令的执行过程。
二、实验要求
1实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分 析等。
2•本实验要求在PC机上进行。
3•本实验只要求在DEBUC调试状态下进行,包括汇编程序,调试程序,执行程序。
4•熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。
二、实验要求
1•实验前准备
1分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2写出算法或画出流程图。
3写出源程序。
4对程序中的结果进行分析,并准备好上机调试的过程。
2•本实验要求在PC机上进行。
3•汇编过程中出现问题,可用DEBU(进行调试。
xorax,ax pushax movax,data movds,ax leasi,data1 leadi,data2 leabx,data3 moval,[si+3] movah,[di+3] an dal,0fh an dah,0fh addal,ah oral,30h mov[bx+3],al moval,[si+2] movah,[di+2] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+2],al moval,[si+1] movah,[di+1] an dal,0fh an dah,0fh adcal,ah oral,30h mov[bx+1],al moval,[si] movah,[di] an dal,0fh an dah,0fh adcal,ah
;exercize21
微机原理实验报告

此实验报告是我二人进行讨论后共同编写,其中主要负责写实验一、四、六部分,主要负责写实验二、三、五部分。
实验一(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_汇编程序的建立、执行与调试

(5)按“-”键,在下一行显示上一单元地址及内容,并等待。
1.6跟踪命令:T[=地址][,计数]
1.7执行过程命令:P
(追踪不进入子程序)
1.8执行命令:G[=地址][,断点][,断点][,…]
1.9退出命令:Q
2、实验步骤
(一)汇编程序的建立
2.1.1编辑
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
end start
2.1.2汇编源程序
在DOS下,用汇编程序对源程序进行汇编,汇编后,产生·OBJ文件。其方法:
C:ml /c原文件名
这里假设MASM文件在根目录下。见截图2.1.2
2.1.3连接
将·OBJ文件转换成·EXE可执行文件。其方法:
2.在对汇编源程序进行汇编连接时可以直接使用ml指令,默认会直接生成.obj与.exe文件
3.进行实验时能熟练运用emu8086这个小软件可以大大的节省时间,自己已经初步对其进行了使用,效率确实提高不少。
4.通过本次实验我掌握汇编语言程序建立的过程和掌握调试工具DEBUG的使用方法,对汇编程序的整体框架有了了解。
微机原理与汇编语言
实验报告
姓 名
xxx
学 号
xxxxxx
专业语言
实验日期
2014.09.24
实验名称
汇编程序的建立、执行与调试
成 绩
一、实验目的
1、掌握汇编语言程序建立的过程
2、掌握调试工具DEBUG的使用方法
二、实验内容
1、实验原理
在DEBUG中,所有的数都是以十六进制方式显示,并且数后面没有H。在DEBUG中标志位用以下符号来显示:
微机原理实验报告_2

实验一汇编语言的编译、链接和调试一、实验目的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

北京工业大学微机原理实验报告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)的文件夹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西华大学实验报告
西华大学实验报告(理工类)
开课学院及实验室:电气信息学院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。