实验二 汇编语言程序设计

合集下载

汇编语言-实验二 循环与子程序程序设计

汇编语言-实验二 循环与子程序程序设计

汇编语言-实验二循环与子程序程序设计
实验目的
本实验旨在通过学习循环和子程序的概念和使用方法,掌握汇
编语言中循环和子程序的程序设计技巧,培养学生的程序设计能力。

实验内容
1. 循环程序设计:编写一个循环程序,实现指定次数的循环操作。

2. 子程序程序设计:编写一个子程序,实现指定功能的模块化
程序设计。

实验步骤
循环程序设计
1. 根据实验要求确定需要循环的次数。

2. 初始化循环计数器,将循环计数器置为0。

3. 判断循环计数器是否达到循环次数的要求,如果达到则跳出
循环,否则继续执行循环体。

4. 执行循环体的操作。

5. 循环计数器自增1。

6. 返回到第3步继续判断循环条件。

子程序程序设计
1. 根据实验要求确定需要实现的功能。

2. 将要实现的功能封装在一个子程序中,确定输入参数和输出结果。

3. 在主程序中调用子程序完成指定的功能。

4. 如果需要,可以在子程序中调用其他子程序实现更复杂的功能。

实验
本次实验通过编写循环和子程序的程序设计,加深了对汇编语言中循环和子程序的理解。

循环程序设计能够实现重复执行指定次数的操作,提高了程序的效率;子程序程序设计能够实现模块化和可重用性,提高了程序的可读性和可维护性。

通过实践,进一步掌握了汇编语言的程序设计技巧,加深了对汇编语言的理解和应用能力。

参考资料
汇编语言程序设计教程
汇编语言程序设计实验指导书。

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

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

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的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。

微机实验二_汇编语言程序设计

微机实验二_汇编语言程序设计

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码。

汇编语言程序设计实验二及答案

汇编语言程序设计实验二及答案

实验二:汇编语程序设计一、实验目的旨在通过实验使同学了解汇编语言的程序结构和编程方法,可以编写出顺序程序、分支程序和一般的循环程序,并学会修改和调试方法。

二、实验环境MASM、LINK、DEBUG或包含此软件的相关软件三、实验内容1.1、从FIRST开始的100个单元中存放着一个字符串,结束符为$。

编写一个程序,统计该字符串中字母‘A’的个数。

DATA SEGMENTFIRST DB 'AGHI K…$’ ;定义字符串,结束符为$NUMBER DB ? ;结果存放单元DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX,DATA ;建立数据段的可寻址性MOV DS, AXMOV BL,0 ;BL用作统计计数器LEA DI,FIRST ;取字符串首址NEXT: MOV AL, [ DI] ;取一个字符INC DI ;指向下一个字符CMP AL,’$’ ;与结束符’$’比较JE EXIT ;等于,搜索完结束CMP AL , 'A ;与字符‘A’比较JNE NEXT ;不等于。

不统计INC BL ;找到,计数IMP NEXT ;继续EXIT: MOV NUMBER,BLMOV AH,4CHINT 21HCODE ENDSEND START2.编程判断输入的ASCII码字符时数字还是字母,并将判断结果分别以“D”和“L”显示出来。

解:用宏实现字符显示。

程序如下:DISPLAY MACRD CHAR;显示字符宏定义MOV DL,CHARMOV AH,02HINT 21HENDMCODE SEGMENTASSUME CS: CODESTART : MOV AH, 0lH ;输人一个ASCI I码字符INT 21 HCMP AL, '0’JC ERROR ;非数字和字母,转ERROR处理CMP AL, '9'JA NEXT ;非数字,转NERTDISPLAY 'D' ;数字。

汇编语言程序设计实验报告二

汇编语言程序设计实验报告二

汇编语言程序设计实验报告(二)一、实验目的1)加深对循环结构的理解。

2)掌握循环程序的设计方法。

3)学习子程序的定义和调用方法。

4)掌握子程序、子程序的嵌套、递归子程序的结构。

5)掌握子程序设计、编制及调试。

6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容1)编制在屏幕上显示九九乘法表的程序。

2)编制在屏幕上显示用*组成的三角形的程序。

三、实验结果(1)(2)四、源代码(1)DA TA SEGMENTM DB 31H,32H,33H,34H,35H,36H,37H,38H,39H DA TA ENDSSTACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK1 START:MOV AX,DA TAMOV DS,AXMOV CX,9MOV DI,OFFSET MLOP1:PUSH CXMOV CX,[DI]AND CX,0FHMOV SI,OFFSET M LOP2:MOV AL,[SI]MOV DL,ALMOV AH,2INT 21HAND AL,0FHMOV BH,ALMOV DL,'*'MOV AH,2INT 21HMOV BL,[DI]MOV DL,BLMOV AH,2INT 21HMOV DL,'='MOV AH,2INT 21HAND BL,0FHMOV AL,BHMOV AH,0MOV DL,10DIV DLMOV BL,AHCMP AL,0JE NEXTMOV DL,ALADD DL,30HMOV AH,2INT 21H NEXT:MOV DL,BLADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HINC SILOOP LOP2MOV DL,0AHMOV AH,2MOV DL,0DHINT 21HINC DIPOP CXLOOP LOP1MOV AH,4CHINT 21HCODE ENDSEND START(2)STACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1 BEGIN:MOV AH,1INT 21HMOV BL,ALSUB BL,30HMOV DL,0AHINT 21HMOV DL,0DHMOV AH,2INT 21HMOV BH,0MOV CX,BXMOV BX,1L1: PUSH CXMOV CX,BX L2: MOV DL,'*'MOV AH,2INT 21HLOOP L2MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HADD BX,1POP CXMOV AH,4CHINT 21HCODE ENDSEND BEGIN五、实验心得这是第二次做汇编实验,首先,心理上已经没有了第一次做实验的那种茫然,知道了想要编写一个完整的程序,应当先将这一个大问题分解成若干个小的问题,找出每一个小问题所对应的解决方法,然后用代码一步一步实现,再将这一个一个的小问题串联起来,找到它们的契合点,用联系把它们组成一个完整的程序,其中最常用的就是转移指令和循环。

实验二 汇编语言程序设计

实验二 汇编语言程序设计

实验二汇编语言程序设计2.1 实验目的(1)掌握汇编语言程序的基本格式。

(2)学会汇编语言的编辑、汇编、连接及调试的方法。

(3)在MASM 6.11中完成第一个程序。

2.2 实验设备及软件环境装有DOS系统及MASM6.15的微机一台。

2.3 汇编程序设计及调试过程1 编辑汇编语言源程序利用EDIT、记事本等文本编辑器,用汇编语言编写汇编源程序(扩展名为.ASM)。

2 汇编调用宏汇编程序MASM把源程序汇编成目标程序(扩展名为.OBJ)。

在汇编过程中将对源程序进行语法检查。

如果源程序有语法错误,屏幕上将出现提示信息。

此时,需要返回到编辑程序,对有语法错误的语句进行修改。

然后重新汇编,直到程序无语法错误为止。

3 连接由汇编后产生的目标程序通过连接程序LINK,转换为一个可执行文件(扩展名为.EXE)。

4 调试运行利用DEBUG程序,对可执行文件进行调试,查看程序运行是否正确。

2.4 实验内容编写第1个完整的简单的汇编程序。

汇编语言源程序为:ASSUME CS:CODESGCOSESG SEGMENTSTART: MOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXMOV AX,4C00HINT 21HCODESG ENDSEND2.5 实验步骤1 编辑源程序(以EDIT为例)(1)定义一个段,名称为ABC:ABC SEGMENT..ABC ENDS(2)在这个段中写入汇编指令,来实现要处理的任务: ABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXABC ENDS(3)指出程序在何处结束:ABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXABC ENDSEND(4)ABC被当作代码段来用,所以应该将ABC和CS联系起来:ASSUME CS:ABCABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXABC ENDSEND(5)最终写成的程序为:ASSUME CS:ABCABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXABC ENDSEND(6)程序返回实现程序返回功能的两条指令:MOV AX,4C00HINT 21H(7)最终写成的汇编源程序为:ASSUME CS:ABCABC SEGMENTMOV AX,0123HMOV BX,0456HADD AX,BXADD AX,AXMOV AX,4C00HINT 21HABC ENDSEND(8)与结束有关的几个概念①进入DOS方式,运行EDIT;②在EDIT中编辑程序;③将程序保存为文件C:\1.asm后,退出EDIT,结束对源程序的编辑。

汇编语言程序设计实验报告

汇编语言程序设计实验报告
2.掌握汇编语言源程序的执行过程。
二、实验内容
P131作业29。
实验三子程序设计实验
一、实验目的
1.掌握汇编语言源程序子程序设计方法;
2.会使用CV软件工具。
二、实验内容
把实验二作为子程序,编写主程序来对能否构成三角形进行10判断。
实验四宏汇编程序设计实验
一、实验目的
1.掌握宏汇编程序编程技术及宏调用的方法;
2.主模块程序完成子程序的调用,及判断结果的显示,程序名为:ZHU.asm。
实验五混合程序的开发实验
一、实验目的
1.了解混合调用中的参数设置;
2.掌握混合调用的方法;
二、实验内容
P156第5题。
实验一单指令功能测试实验
一、实验目的
1.会使用DEBUG软件;
2.利用DEBUG单步执行功能测试指令的执行。
二、实验内容
判断从键盘输入的ASCII码数字,若是小于等于5,显示“C”,若是大于5显示“D”。假设输入的只可能是0~9数字。
实验二完整的汇编语言程序设计实验
一、实验目的
1.掌握完整的汇编语言源程序的设计方法;
实验五多模块程序设计实验
一、实验目的
1.掌握汇编段的属性的含义;
2.掌握利用LINK将多模块连接起来的方法;
3.掌握利用库文件将多模块连接起来的方法。
二、实验内容
假设内存单元中有三个字a、b和c,编写一个程序,它可判断它们能否构成一个三角形,若能,显示“Y”,否则,显示“N”;
具体要求:
1.三角形的判断程序为一模块子程序,程序名为:ABC.asm。入口参数:字节变量a、b、c。出口参数:字节变量d=1是三角形,d=0不是三角形。
2.了解COM文件的编程方法及特点;

实验报告二汇编语言程序设计

实验报告二汇编语言程序设计
2)、按下图所示设计彩色用户界面,颜色自选
PASSWORD:
PASSWORD:
3)、使用DOS系统的单字符输入子功能,配合循环程序接收用户键入的字符串
4)、为了保密,用户键入的字符串不应当如实地回显在屏幕上,为了真正起到通行字的作用,程序在接收键入的过程中,不应当响应Ctrl+C
3、程序设计
设计数据段有20个学生的单科成绩(百分制),编程计算并显示
3、程序设计
四、通行字识别
1、试验目的
学习串操作指令的应用、DOS功能调用与文本方式下的彩色字符串显示以及宏指令调用。
2、试验要求
1)、程序执行后,给出简单明了的操作提示,请用户给出“通行字”,只有当用户键入的字符串和程序内定的字符串相同时,程序才能返回DOS.
3、程序设计
二、BCD码数转换成二进制数显示
1、试验目的
学习BCD码数转换成二进制数以及子程序调数,要求采用子程序调用的方法,将他们转换成二进制数,并显示在屏幕上
3、程序设计
三、计算平均成绩
1、试验目的
学习二进制数转换成十进制数的编程方法
2、试验要求
实验报告二:汇编语言程序设计
班级:姓名:
一、统计负数的个数
1、试验目的
复习有符号数的表示与鉴别,学习循环程序与子程序调用的编程方法,掌握二进制数转换成十六进制数的编程方法
2、试验要求
设数据段有8个有符号数,设计一个程序(不是两个程序)完成两项要求:
1)、统计并显示负数的个数
2)、找出真值最大的数,并以十六进制的形式,显示在屏幕上
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二显示程序实验
1.1 实验目的
(1)掌握在PC机上以十六进制形式显示数据的方法。

(2)掌握部分DOS功能调用使用方法。

(3)熟悉集成软件调试环境。

1.2 实验设备及软件环境
通用微型计算机一台。

软件环境要求:
操作系统:DOS、Windowsxp
语言环境:Debug调试程序、MASM宏汇编。

1.3 实验内容
(1)一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上,本实验要求将指定数据区的字符以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。

实验中可使用DOS功能用(INT 21H)。

本实验显示第一行“Show a as hex:”,第二行“ⅹⅹ”,ⅹⅹ是字符“a”的十进制数(61)。

1.4 实验步骤
(1)运行汇编语言编辑软件,选择编辑Edit菜单,根据实验内容的描述编写实验程序或选择Open菜单打开程序。

(2)使用“ASM编绎”菜单中“编译+连接+运行”选项,对实验程序进行汇编、连接。

汇编、连接无误的话,就直接运行程序。

观察运行结果。

(3)或使用动态调试,进行调试环境,观察调试过程中,指令执行情况,包括各寄存器及数据区内容的变化等。

(4)更改数据区中的数据,考察程序的正确性。

1.5 实验程序流程图
绘制实验程序流程图。

1.6实验源程序设计
SSEG SEGMENT PARA STACK 'stack'
dw 100h dup(0) ;初始化堆栈大小为100
SSEG ENDS
DSEG SEGMENT
mes db 'show a as hex:',0ah,0dh,'$'
sd db 'a'
;数据段:在此处添加程序所需的数据DSEG ENDS
;ESEG SEGMENT
;附加段:在此处添加程序所需的数据
;ESEG ENDS
CSEG SEGMENT
assume cs:CSEG, ds:DSEG, ss:SSEG
MAIN PROC FAR ;主程序入口
mov ax, dseg
mov ds, ax
;mov ax,eseg
;mov es, ax
mov dx,offset mes
mov ah,09h
int 21h
mov si,offset sd
mov al,ds:[si]
and al,0f0h
shr al,4
cmp al,0ah
jb c2
add al,07h
c2: add al,30h
mov dl,al
mov ah,02h
int 21h
mov al,ds:[si]
and al,0fh
cmp al,0ah
jb c3
add al,07h
c3: add al,30h
mov dl,al
mov ah,02h
int 21h
starto: mov ah,06h
mov dl,0ffh
int 21h
je starto
;此处添加主程序代码
;按任意键退出
mov ah,1
int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
1.7 实验思考题
在CRT上连续显示0-9数字100遍后返回DOS。

为了使输出的字符之间有间隔,在每一循环中输出一个空格和一个数字,并插入一段延时程序。

为了显示十进制数字,在增量指令后用DAA十进制调制指令。

当DL中放入0DH即回车符进行02号DOS功能调用时,执行回车命令,显示屏上光标回原处。

程序如下:
1.8 实验总结
总结实验过程遇到的问题及采取的解决方法。

上交实验报告。

相关文档
最新文档