汇编语言实验讲义实验2
汇编语言-实验二 循环与子程序程序设计2023简版

汇编语言-实验二循环与子程序程序设计汇编语言-实验二循环与子程序程序设计引言在汇编语言中,循环与子程序是常用的程序设计技术。
循环结构能够使程序重复执行一段代码,而子程序则能够将一段代码封装成一个可重用的模块。
本文将介绍如何使用汇编语言进行循环和子程序的程序设计。
循环结构在汇编语言中,循环结构可以使用`LOOP`指令或者`JMP`指令来实现。
`LOOP`指令会根据`CX`寄存器的值进行循环,每次循环都会将`CX`寄存器的值减一。
程序员可以通过设置`CX`寄存器的初始值来控制循环次数。
下面是一个简单的示例演示如何使用`LOOP`指令实现循环结构:asmMOV CX, 5 ; 设置循环次数为5L1:; 这里是循环体的代码LOOP L1 ; 循环除了`LOOP`指令,我们还可以使用`JMP`指令来实现循环结构。
`JMP`指令会无条件地跳转到指定的标签处,从而实现循环。
在循环体的末尾,程序员需要通过`JMP`指令将控制流程跳转到循环的开始处。
下面是一个使用`JMP`指令实现循环结构的示例:asmMOV CX, 5 ; 设置循环次数为5L1:; 这里是循环体的代码DEC CX ; 循环次数减一JNZ L1 ; 如果循环次数非零,跳转到L1处子程序子程序是一段独立的代码块,可以在程序中被多次调用。
通过使用子程序,可以将重复的代码封装为一个可重用的模块,提高程序的可维护性和可读性。
在汇编语言中,子程序的定义和调用可以使用`PROC`和`CALL`指令来实现。
`PROC`指令定义一个子程序,而`CALL`指令用于调用一个子程序。
在子程序内部,使用`RET`指令返回到调用它的地方。
下面是一个简单的示例演示如何定义和调用一个子程序:asmPROC MySubroutine; 这里是子程序的代码RET ; 返回ENDPCALL MySubroutine ; 调用子程序在子程序内部,可以使用栈来传递参数和保存返回地质。
例如,可以使用`PUSH`指令将参数压入栈中,然后在子程序内部使用`POP`指令来取出参数值。
汇编语言实验讲义

《汇编语言》课程实验指导手册汇编语言程序设计技术是实践性很强的课程。
实践也是学好程序设计课程中必不可少的重要环节。
程序设计的实践分两个步骤:一是设计和编写解决问题的程序算法流程,并在此基础上编写源程序代码;二是在计算机上对程序进行调试,并使程序完成问题的求解过程,进行相应的逻辑测试。
由于汇编语言固有的特点,其程序调试比一般的高级程序语言困难,为此,学习过程中,尤其注意事先做好上机准备,做到目的明确,思路清晰,调试策略完全、全面,以便更好地观察和分析汇编程序执行的技巧,并注意领会计算机工作的本质过程和步骤。
可以参阅计算机组成原理方面的参考书,帮助理解计算机的基本工作原理。
实验过程中,应当注意如下问题:(1) 上机实习的主要目的是训练汇编语言程序的上机调试能力和分析、解决调试过程中遇到的问题的能力。
并在此过程中逐步提高程序编写与问题分析能力。
而不是简单地对教材上的实例做验证式的操作;(2) 上机内容可以结合教材内容和习题,或由老师布置专门的上机习题进行;(3) 为提高上机效果。
必须在上机之前准备好上机的基本内容并编写好上机程序,尽量在上机之前先作好预先的阅读分析工作;(4) 上机调试的基本方法:语法检查(编译)==>逻辑检查(设计者检查)==>测试。
上机实验的主要步骤:(1) 了解实验目的和要求,并复习或阅读相关教材内容;(2) 根据题目要求,事先编写好程序,并经过设计者静态检查程序的语法正确性和逻辑正确性,分析可能出现的问题;(3) 设计好上机时准备测试程序的用例;(4) 上机调试通过程序,并记录上机调试中出现的问题和测试结论等,写出实验报告。
调试过程中,尤其要注意各种语法错误、逻辑错误调试经验的积累。
要注意的是,汇编语言程序的实验中,其源程序到可执行程序之间的转换过程的调试步骤一般不要求有集成环境,需要分步进行。
具体步骤如下:1) 编辑源程序(用edit或记事本或editplus或UltraEdit);2) 将源程序汇编成目标文件;3) 对目标文件进行链接,形成可执行文件(.EXE/.COM);4) 执行或调试执行可执行文件。
山东大学汇编语言上机实验——实验二

程序的基本结构练习一:循环程序设计一、实验目的(1) 加深对循环结构的理解;(2) 掌握循环程序的设计方法;(3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。
同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
2.设STR字符串是以0结尾。
试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。
3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。
三、算法描述流程图实验内容1、2、3的流程图分别为图1、图2、图3。
四、实验步骤1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。
同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
1)输入源程序:DA TA SEGMENTBUF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DWB DW DA TA ENDSCODE SEGMENTASSUME CS: CODE, DS: DA TASTART: MOV AX, DATAMOV DS, AXLEA BX, BUFLEA SI, BUF1LEA DI, BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,[BX]CMP AX,0JGE L1MOV [DI],AXADD DI,2INC BJMP NEXTL1: MOV [SI],AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV AH, 4CHINT 21HCODE ENDSEND START2)运行程序。
汇编语言实验讲义

《汇编语言程序设计》实验指导书计算机系宋勤《汇编语言》实验学时分配表实验一汇编语言程序上机过程以及调试一、预习内容. 工具软件、的使用. 常用命令的使用:. 完整程序设计方法的格式。
二、目的要求. 掌握常用工具软件、的使用. 掌握常用命令: 能灵活使用这些命令调试程序. 掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
三、实验内容用两种方法把字符串复制到串中去;(1)从左到右的方向复制(2)从右到左的方向复制' $'(?);************************************************, ,:实验步骤:)用文字编辑工具(记事本或)将源程序输入完整后保存在:\下,注意保存时将文件扩展名改为(如)。
)打开桌面的“命令提示符”程序进入命令操作,先用命令改变路经,接着用”文件名” (如,这里文件名可以不带扩展名) 对源文件进行汇编,产生文件和文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
)用”文件名” (如;) 将文件连接成可执行的文件()。
)用调试程序,熟悉命令的使用:()打进入控制,显示提示符‘‘。
()用命令执行程序,可得与步骤相同的结果,也可用命令逐条运行这些指令,每运行一行检查并记录有关寄存器及的变化情况,并注意标志位有无变化。
()用命令检查键入的程序并记录,特别注意左边的机器码和指令地址。
如果一条命令没有显示完全,可以再次输入命令,该命令会紧接着上一个命令的输出继续显示。
()用命令’地址’设置断点,如,表示将断点设置在代码段的偏移地址为的指令前,并执行到该断点前。
其中,命令中的地址项可以从上条命令的运行结果获得。
()用命令查看各寄存器的情况。
()用命令查看数据段的情况,表示从偏移地址开始,也可以指定其他偏移地址值。
()用命令‘地址’的方式修改数据区的字符串,其中’地址’指需要修改的数据段内存单元偏移地址,可根据上条命令获得。
微机实验二_汇编语言程序设计

3.2 实验二汇编语言程序设计3.2.1 实验目的1)进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念;2)熟练掌握动态调试程序TD/DEBUG的常用命令或窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器等环境;3)熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制方法,了解DOS/BIOS功能调用的基本方法。
3.2.2 实验环境实验环境同实验一。
3.2.3 基本实验内容1)基本实验内容和要求(1)编写程序实现如下功能;①从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其他字符不变)并按原顺序将这些字符在屏幕上显示出来。
②从键盘输入在0-65535之间的十进制数,将其转换为16进制数并在屏幕中显示出来,要求判断输入字符串是否为在0-65535之间的十进制数。
(2)复习功各种操作,并用DEBUG调试程序,学会基本命令操作,并通过单步、设置断点等方法观察中间结果,完成正常运行。
命令行方式下直接键入debug myfile.exe回车(myfile为待调试可执行程序),进入调试方式(显示—),键入H回车显示全部命令、格式和功能。
常用命令有;U(反汇编)、A(汇编输入指令程序)、R(寄存器显示/修改)、I(端口输入)、0(端口输出)、D(显示数据)、E(修改数据)。
除资源修改管理功能外,重点应用T(单步)、Tn(执行n步)、P(过程/指令)、G××××(从当前器:IP执行到断点××××)或G=××××l ××××2(从××××l执行到××××2断点)调试实驴程序。
2)编程提示(1)小写字母的ASCII码比其所对应的大写字母的ASCII码值大20H,如字符“a”的ASCII 码为61H,而字符“A”的ASCII码为41H,因此字符变换时将小写字母的ASCII码减去20H即为大写字母的ASCII码。
汇编语言与接口技术实验讲义

汇编语⾔与接⼝技术实验讲义汇编语⾔上机指导书湖南师范⼤学⼯学院计算机专业⽤实验⼀ DOS常⽤命令及8086指令使⽤实验⽬的:通过实验掌握下列知识:1、DOS命令: DIR,DEL,RENAME,FORMAT,COPY。
2、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG3、DEBUG命令: A,D,E,F,H,R,T,U。
4、BCD码,ASCII码及⽤16进制数表⽰⼆进制码的⽅法。
5、8086寄存器: AX,BX,CX,DX,F,IP。
内容及步骤:⼀、DOS常⽤命令练习:1、将新盘插到 A驱动器中,⽤DIR命令查看盘上⽂件。
2、⽤命令 COPY /doc/f9837fdf770bf78a652954ce.html BUG 复制⼀个⽂件。
3、⽤命令 RENAME BUG BG 将BUG ⽂件改为BG。
4、⽤命令 DEL BG 将⽂件BG删除。
在操作时要注意提⽰信息,并按提⽰操作。
⼆、DEBUG 命令使⽤:1、打 DEBUG 进⼊ DEBUG 控制,显⽰提⽰苻 '_ '。
2、⽤命令 F 100 10F 'A' 将'A'的ASCII码填⼊内存。
3、⽤命令 D 100 10F 观察内存中的16进制码及屏幕右边的ASCII 字符。
4、⽤命令 F 110 11F 41 重复上⼆项实验,观察结果并⽐较。
5、⽤命令 E 100 30 31 32 …… 3F将30H-3FH写⼊地址为100开始的内存单元中,再⽤D命令观察结果,看键⼊的16进制数是什么字符的ASCII码?6、⽤H命令检查下列各组16进制数加减结果并和你的⼿算结果⽐较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H(5)A758,347FH7、⽤R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
汇编语言实验报告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字节加数,均为低字节在前面。
实验二ARM汇编语言实验精品文档

2019/10/5
1
1 实验目的与要求 2 实验内容 3 实验操作步骤 4 测试数据与实验结果
1、实验目的与要求
目的: 1)熟练使用EmbestIDE集成开发环境。 2)基本掌握 ARM 汇编语言
要求: 1)独立完成程序设计、编码与调试 2)编写实验报告
2、实验内容
按照GNU汇编程序文件格式,用ARM汇编语言编写程序, 求三个数(x、y、z)中的最大值与最小值,分别存放在寄 存器R6、R7中。三个数用伪操作定义如下:
接一起完成。 如果编译过程出错,需要修改错误,直到构建成功。
9)调试 连接目标机 下载 运行(打开源文件、设置断点) 浏览(寄存器、内存)
x .long 0xaa88 Y .long 0x77aa z .long 0x123489ab
.text global _start _start:
MOV R0 , #0x55
实验设备: 宿主机:PC机
wait: B wait .end
目标机:IDE内置的软件模拟器
3、实验操作步骤
1)运行EmbestIDE
2)新建工作区
3)新建一个文件, 另存为以.s为பைடு நூலகம்展名的文件
4)在文件中编辑程序
5)把编辑好的源文件添加到工程中
6)设置工程属性
选择编译工具 调试配置 连接方式(SIM) 下载符号表文件 调试目标文件 下载内存地址
3、实验操作步骤
8)构建工程 可以单独编译一个文件,也可采用build实现编译、连
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 算术运算类操作实验 (基础与设计)
一、实验要求和目的
1、了解汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;
2、掌握各类运算类指令对各状态标志位的影响及测试方法;
3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;
4、熟悉无符号数和有符号数乘法和除法指令的使用;
5、掌握符号位扩展指令的使用。
6、掌握BCD码调整指令的使用方法
二、软硬件环境
1、硬件环境:计算机系统 windows;
2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识
本实验主要进行算术运算程序设计和调试,涉及到的知识点包括:
1.加减法处理指令
主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。
2.乘除法指令和符号位扩展指令
主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW和从字扩展到双字的指令CWD。
3.BCD码的调整指令
主要有非压缩的BCD码加法调整指令DAA,压缩的BCD码减法调整指令DAS,非压缩的BCD码加法调整指令AAA,非压缩的BCD码减法调整指令AAS,乘法的非压缩BCD 码调整指令AAM,除法的非压缩BCD码调整指令AAD。
8088/8086指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表1所示的数据类型进行数据运算。
二进制 BCD码
数制
带符号无符号组合非组合运算符+、-、×、÷+、-+、-、×、÷
操作数字节、字、多精度字节(二位数字)字节(一位数字)
表1 数据类型数据运算表
各指令的格式、功能及其对标志位的影响等细节知识,请同学们查阅相关书籍,这里不再赘述。
四、实验内容与步骤
1、对于两组无符号数,087H和034H,0C2H和5FH,试编程求这两组数的和差积商,并考
虑计算结果对标志寄存器中状态标志位的影响:
计算状态标志
表达式结果 CF AF ZF OF SF PF 087H +034H
087H -034H
087H *034H
087H/034H
0C2H+5FH
0C2H-5FH
0C2H*5FH
0C2H/5FH
总结各运算对状态标志位的影响,及其意义。
2、在数据段定义了两个多精度的有符号16进制数,FIRST和SECOND ,1)求两数的和
与差,并将结果存放在THIRD为首地址的缓冲区中;2)如果把两组数据当作十进制数据
来处理,再次求两数的和与差,并将结果存放在FORTH为首地址的缓冲区中。
试编程实现
上述运算。
FIRST DW 45 H,82H,96 H,57H
SECOND DW 12 H,46H,83 H,45H
16进制结果 10进制结果FIRST +SECOND
FIRST -SECOND
3、编程计算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V均为16位带符号数,假设初始数
据分别装入X、Y、Z、V单元,要求上式计算结果的商存入AX,余数存入DX寄存器。
同
学自行给出初始值加以验证程序。
五、实验要求
(1)画出各程序流程图;
(2)列出程序清单,加上适量注释;
(3)回答思考问题;
(4)记录实验结果。
(5) 完成实验报告(实验材料上的内容简写,自己的工作要详尽)。