实验二:简单汇编语言程序设计与调试

合集下载

实验二_指令系统相关程序的编写与调试实验

实验二_指令系统相关程序的编写与调试实验

重庆大学学生实验报告实验课程名称汇编语言程序设计开课实验室DS1502学院软件学院年级16 专业班软件工程5班学生姓名吉沼橙学号********开课时间2017 至2018 学年第 1 学期软件工程学院制《汇编语言程序设计》实验报告Add sp,4Pop axPop bxPush axPush bxPop axPop bxMov ah,4chInt 21h Code endsEnd start先转换成asm格式然后转换成obj格式然后转换成exe格式(2)用debug跟踪lab2.exe 的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

开始每一步的执行:1:AX=20002:SS=20003:SP=00044: AX=0000 SP=00065: BX=0000 SP=00086.7:AX与BX入栈SP由0008到00048:AX与BX出栈SP由0004到0008(5)习题:3.37 -教材114页。

MOV AL, STATUSAND AL, 00010101B ;只保留第1、3、5位CMP AL, 00010101BJZ ROUTINE_1 ;3位全为1转ROUTINE_1JZ ROUTINE_2 ;两位为1转ROUTINE_2 JZ ROUTINE_3 ;1位为1转ROUTINE_3JZ ROUTINE_4 ;3位全为0转ROUTINE_4 ROUTINE_3:JMP EXITROUTINE_1:JMP EXITROUTINE_2:JMP EXITROUTINE_4:EXIT: INT 21H。

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。

2、熟悉DEBUG程序的使用方法。

3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。

二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。

2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。

三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。

2、预习DEBUG调试程序的使用方法。

3、根据实验内容要求,编写好实验源程序。

四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。

2、汇编、连接源程序,产生.EXE可执行文件。

3、运行程序。

(1) 进入DEBUG。

打入DEBUGT MYPROG.EXE。

MYPROG为所编程序的文件名。

(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。

如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。

(3) 检查程序。

在程序中设置若干断点,以便杳出错误所在。

(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。

五、实验报告要求1、列出程序清单,并给出程序流程图。

2、总结实现数据传送的几种方法,指出它们的区别。

开始3、分析实验中所遇到的一些问题,分析错误原因。

4、说明本实验中是如何使用DEBUG进行调试的。

CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。

《汇编语言》实验报告

《汇编语言》实验报告

《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。

实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。

汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。

本实验通过编写汇编语言程序,加深对汇编语言的理解。

二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。

2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。

3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。

b.设置段寄存器,将数据段地址加载到DS寄存器中。

c.设置显示模式和光标位置。

d.将字符串逐个字符输出到屏幕上。

e.关闭显示模式。

4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。

5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。

三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。

通过程序分析和调试过程,加深了对汇编语言的理解和掌握。

四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。

通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。

同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。

在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。

总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。

程序的调试实验报告(范文2篇)

程序的调试实验报告(范文2篇)

程序的调试实验报告(范文2篇)以下是网友分享的关于程序的调试实验报告的资料2篇,希望对您有所帮助,就爱阅读感谢您的支持。

程序的调试实验报告(1)微机原理与接口技术课程作业班级:目录一、实验目的:............................................................................................. . (3)二、实验环境................................................................................................. . (3)三、实验过程................................................................................................. . (3)(一)基础知识储备................................................................................................. .. (3)(二)汇编语言程序设计................................................................................................. (3)(三)汇编程序调试................................................................................................. .. (3)四、调试实例................................................................................................. . (4)(一)实例一................................................................................................. .. (4)(二)实例二................................................................................................. .. (5)(三)实例三................................................................................................. .. (6)(四)实例四................................................................................................. .. (7)五、实验总结................................................................................................. . (8)(一)实验收获................................................................................................. . (8)(二)实验感悟................................................................................................. . (9)一、实验目的:汇编语言是一种用助记符表示的程序设计语言。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验⼀DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。

⼆、实验要求1.掌握DEBUG的使⽤,调试程序。

2.读懂程序中各条指令,说明程序功能。

三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。

100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。

2.加深对指令的理解。

⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。

请编⼀程序将AX的内容和BX的内容进⾏交换。

请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。

2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。

在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。

三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。

汇编语言实验报告2

汇编语言实验报告2

调试程序功能段一、实验目的1.继续学习使用DEBUG程序的各种命令。

2.利用DEBUG学习了解计算机取指令、执行指令的工作过程。

3.掌握8086/8088基本指令的使用方法和功能。

二、实验任务1.按照下列给定步骤完成求累加和程序:程序:MOV BX,1000MOV CX,10MOV AL,0LOP: ADD AL,[BX]INC BXJ: L OOP LOPINT3步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

2)用命令N AA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址) ,用R命令把BX设为:0000H,CX 设为文件长度。

4)用命令W 100将此程序存到AA命名的磁盘文件中。

5)用命令Q退出DEBUG。

6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。

若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。

7)8)用E命令在内存地址1000H处键入16个数字9)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。

10)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样, 若不一样,检查程序是否有错。

11)重复G J与T,再检查AX是否正确。

(J为断点地址)12)用G命令使程序运行到结束,检查AX值是否正确。

2.用命令A汇编下列指令,判断指令正误并说明原因。

(1)LEA DI,[AX](2)MOV DS,2010(3)PUSH AL(4)OUT 900,AL(5)MOV [BX],03.利用T,P,G命令,执行下列指令段,注意它们的不同之处。

(6)MOV DI,300MOV SI,400MOV CX,3CLDREP MOVSBINT 3(7)MOV AH,2MOV DL,41INT 21INT 34.程序: MOV DI,1000MOV CX,8MOV SI,2000CLCLOP: MOV AL,[SI]ADC[DI],ALINC SIINC DILOOP LOPINT20步骤:1)用A命令键入此程序2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。

2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。

4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。

4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。

4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。

5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。

希望对你有所帮助!。

汇编语言程序设计2

汇编语言程序设计2

目录系统认识 (1)实验一数码转换编程及程序调试 (5)实验二运算类编程实验 (11)实验三分支程序、循环程序设计实验 (16)实验四子程序设计实验 (22)实验五显示程序实验 (26)实验六串行通讯应用实验 (27)附录WMD86 联机软件使用说明 (40)系统认识一、实验目的掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

二、实验设备PC微机一台,TD-PITE实验装置一套。

三、实验内容编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。

四、实验步骤1. 运行Wmd86软件,进入Wmd86集成开发环境。

2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。

语言选择后,下次再启动软件,语言环境保持这次的修改不变。

在这里,我们选择汇编语言。

图13. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。

默认文件名为Wmd861。

图24. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

图3程序:SSTACK SEGMENT STACK ;定义堆栈段DW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000H ;建立数据起始地址MOV CX, 16 ;循环次数AA1: MOV [SI], ALINC SI ;地址自加1INC AL ;数据自加1LOOP AA1AA2: JMP AA2CODE ENDSEND START5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击进行链接,链接无误输出如图5所示的输出信息。

图4图56. 连接PC与实验系统的通讯电缆,打开实验系统电源。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深圳大学实验报告
课程名称微型计算机技术
项目名称实验二:简单汇编语言程序设计与调试
学院
专业
指导教师
报告人学号
实验时间 2015-11-01 提交时间 2015-11-15
教务处制
一、实验目的与要求
1.1掌握使用运算类指令编程及调试方法。

1.2掌握运算类指令对各个状态标志位的影响及其测试方法。

二、实验内容与方法
8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表2-1所示的数据类型进行算术运算。

表2-1 数据类型算术运算表
2.1二进制双精度加法运算
2.1.1 实验要求:
计算X+Y=Z,将结果Z存入某存储单元。

2.1.2 实验原理:
本实验程序是双精度(2个16位,既32位)运算,利用累加器AX,先求低16位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。

由于低位和可能向高位有进位,因而高位字相加语句需要用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。

2.1.3 参考程序清单:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
XL DW ?;请在此处给X低位赋值
XH DW ?;请在此处给X高位赋值
YL DW ?;请在此处给Y低位赋值
YH DW ?;请在此处给Y高位赋值
ZL DW ?
ZH DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,XL ;X的值送AX
ADD AX,YL ;X低位加Y低位
MOV ZL,AX ;存低位和
MOV AX,XH ;X高位送AX
ADC AX,YH ;X高位加Y高位
MOV ZH,AX ;存高位和
CODE ENDS
END START
2.2十进制数的BCD码减法运算
2.2.1 实验要求:
计算X-Y=Z,其中X,Y,Z为BCD码。

2.2.2 参考实验程序及流程图如下:
STACK SEGMENT STACK
DW 64 DUP(?) STACK ENDS
DATA SEGMENT
X DW ? ;请在此处给X赋值
Y DW ? ;请在此处给Y赋值
Z DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,00H
SAHF
MOV CX,0002H
MOV SI,OFFSET X
MOV DI,OFFSET Z
A1: MOV AL,[SI]
SBB AL,[SI+02H]
DAS
PUSHF
AND AL,0FH
POPF
MOV [DI],AL
INC DI
INC SI
LOOP A1
A2: JMP A2
CODE ENDS
END START
2.3乘法运算
2.3.1实验要求:
本实验实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,乘积在屏幕显示。

2.3.2 参考程序清单:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
DATA1 DB 5 DUP(?) ;乘数
DATA2 DB ? ;被乘数
RESULT DB 6 DUP(?) ;乘积
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
CALL INIT
MOV SI,OFFSET DATA2
MOV BL,[SI]
AND BL,0FH
CMP BL,09H
JNC ERROR
MOV SI,OFFSET DATA1
MOV DI,OFFSET RESULT
MOV CX,0005H
A1: MOV AL,[SI+04H]
AND AL,0FH
CMP AL,09H
JNC ERROR
DEC SI
MUL BL
AAM
ADD AL,[DI+05H]
AAA
MOV [DI+05H],AL
DEC DI
MOV [DI+05H],AH
MOV CX,06H
MOV SI,OFFSET RESULT
DISPLAY:MOV AH,01H
MOV AL,[SI]
ADD AL,30H ;得到ASCII码
INT 10H ;显示器显示
INC SI
LOOP DISPLAY
A2: JMP A2
INIT: MOV SI,OFFSET RESULT ;RESULT区清零
MOV CX,0003H
MOV AX,0000H
A3: MOV [SI],AX
INC SI
INC SI
LOOP A3
RET
ERROR: MOV AX,0145H ;显示“E”
INT 10H
JMP A2
CODE ENDS
END START
2.4设计性实验-----开平方运算(选作)
2.4.1 设计要求:
设计一个用减奇数法的开平方运算程序
2.4.2 设计提示:
8086/8088指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通
过程序来实现的。

用减奇数法可求得近似平方根,获得平方根的整数部分。

我们知
道,N个自然数中的奇数之和等于N²,即:
1+3+5=9=3²
1+3+5+7=16=4²
1+3+5+7+9+11+13+15=64=8²
若要做S的开方运算,那么就可以从S中逐次减去自然中的奇数1,3,5,7。

,一
直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。

(设开平方数为正整数,存放在3500H单元)
(5)D350A↙,显示结果为:350A 04 00 CC…。

(6)反复试几组数,考察程序的正确性。

三、实验步骤与过程
2.1二进制双精度加法运算
(1)输入程序并检查无误,经汇编、链接后装入系统。

(设:CS:0000H,IP:2000H)
(2)打开寄存器窗口,观察各寄存器内容的变化。

(3)用U0000:2000查看MOV AX,XXXX(DATA)语句,即得到数据段段地址CS:XXXX用E命令EXXXX:0000↙给XL,XH,YL,YH赋值存入二进制数AO 65 15 00和9E B7 21 00.
(4) G=0000:2000↙,运行以上程序。

(5) DXXXX:0008↙,显示计算结果:3E 1D 37 00 CC….
(6)重新赋值,用T(T=0000:2000)↙命令逐步运行程序,观察寄存器内容的变化。

(7)反复试几组数,考察程序的正确性.
查看段地址CS:
用E命令赋值:
运行并查看显示计算结果:
单步运行过程:
2.2 十进制数的BCD 码减法运算
(1)输入实验程序并检查无误,经汇编、链连接后装入系统,并打开寄存器窗口。

(设: CS :0000H ,IP :2000H)
(2)用U0000:2000查看MOV AX ,XXXX (DATA )语句即得到数据段地址CS :XXXX 。

用E
命令EXXXX :0000↙给X ,Y 赋值存入40和12的BCD 码:00 04 02 01。

(3) G=0000:2000↙,运行以上程序。

(4) DXXXX :0004↙,显示计算结果
(5) 重新赋值,用T 命令单步运行程序,观察各寄寸器内容的变化。

(6) 反复试几组数,考察程序的正确性。

程序注释:
查看段地址CS:
用E命令赋值:
用D命令查看显示结果:
单步运行过程:
2.3 乘法运算
(1) 输入程序并检查无误,经汇编、链接后装入系统。

(2) 打开寄存器窗口,观察寄存器内容的变化。

(3) 用U2000↙命令查看MOV AX ,XXXX 语句,即得数据段段地址CS :XXXX 。

(4) 用EXXXX :0000↙命令在对应数据段填入乘数与被乘数。

(5) G=0000:2000↙,运行程序,屏幕显示结果,用ESC 可终止程序运行。

(6) 反复试几组数,考察程序的正确性。

要求画出调试正确的程序的程序框图,并给程序加注释
程序注释:
四、实验结论或体会
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

相关文档
最新文档