汇编语言顺序结构实验报告
汇编语言实验报告
合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一. 实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二. 实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三. 实验过程和程序基础题:1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
附加题:1. 从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x2. 完成BX中1的个数的统计。
3. 用串操作指令将DS:0000开始20个字节初始化为:0CCH。
并将这20个字节的内容复制到其后的20个字节里。
四. 实验结果(包括必要的截图)基础题 1:基础题 2:附加题 1:附加题 2:附加题 3:五. 实验体会1. 在汇编语言中,变量的其实都是地址。
2. 在Debug中,数值都是16进制的。
3. 在读写内存中的数据时,必须指出数据类型是byte还是word。
顺序结构程序设计实验报告
顺序结构程序设计实验报告
实验目的:
本次实验旨在让学生掌握顺序结构程序设计的基本概念,深入了解程序的运行过程,
以及学习如何编写一个简单的顺序结构程序。
实验器材:
计算机、编程软件“Visual Basic”。
实验过程:
1.理解顺序结构程序
顺序结构程序是指程序按照从上到下的顺序执行,具有简单、直观、易于理解的特点。
在此基础上,实现更复杂的程序设计。
2.熟练掌握计算机基本操作
使用计算机是程序设计的前提条件之一,通过熟悉计算机的基本操作,有利于更好地
进行程序设计。
“Visual Basic”是一款用于Windows平台的可视化编程环境,可以轻松编写出各种Windows应用程序。
4.编写“Hello World”程序
“Hello World”程序是编程入门的必备项目,通过打印出“Hello World”这句话,
来证明程序的正确性和运行结果。
5.编写一个简单的求和程序
求和程序是程序设计的基础,能够帮助初学者更好地理解程序运行的原理。
实验结果:
通过本次实验,我学会了如何编写一个简单的顺序结构程序,深入了解了程序设计的
基本概念和过程。
在未来的学习和工作中,我将进一步加强对计算机和编程环境的熟悉,
不断深入学习和掌握程序设计的技巧,更好地应对日益复杂的实际工作中的问题。
(实验六)汇编语言课内实验报告
实验四循环结构程序设计上机实验
一、实验目的:
1、掌握循环结构程序设计的基本方法。
2、掌握用masm for Windows编辑、编译、连接汇编语言源程序的基本方法。
3、掌握DEBUG调试程序的U、D、R、T、G、Q常用命令的用法。
二、实验步骤:
1、用ASM masm for Windows将源程序输入,其扩展名为.ASM。
2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,则修改源程序后重新汇编,直至通过。
3、用LINK将.OBJ文件连接成可执行的.EXE文件。
4、用DEBUG调试程序并分析结果。
三、实验内容:
1. 在数据段中从变量DA1开始有N个带符号数。
把其中的正数、负数(设没有0)依次存入DA2、DA3开始的单元中并分别统计正、负数的个数存入DA4、DA5字节单元之中。
试编写程序。
将本例中的DEC指令修改为LOOP指令来实现循环程序的设计。
在修改过程中还应修改哪能些指令,请自己分析,为什么?
四、综合练习:
1.编写求100个正整数的和的程序。
如果和不超过16位字的范围(即65535),则将其和保存到WORDSUM单元中,若超过则显示OVERFLOW。
2.设有N个数,连续存放在以BUF为首址的字存储区中,试编写程序,统计其中最高的6位全1的数个数并将统计结果送入寄存器DX中。
五、实验报告(注意:将报告正反两面打印后用手写)附件如下:
实验四循环程序设计实验报告学号姓名成绩。
汇编语言实验报告
汇编语言实验报告实验一实验目的:1. 掌握程序结构2. 掌握七种寻址方式3. 掌握三种类型指令(传送指令,算术指令,逻辑指令)4. 掌握数据定义方式及存储方式5. 掌握不同进制,正负数值,字符的表示实验要求:1. 编制完整顺序结构程序2. 包含上述七种寻址方式3. 至少三种以上数据定义4. 调试每条指令的执行结果,做好记录5. 记录内存地址分配和变化结果实验结果:1.部分代码及分析;=======================数据段=============D1 SEGMENTA1 DW 1122HA2 DB 5A3 DW 3344HA4 DW?COUNT EQU 6COUNT1 DW 0COUNT2 DW 0M DB 13,10,'MASM for Windows1213243524365 MASM for WINDOWS 121',13,10,'$'L DB50 DUP(0)N DW50D1 ENDS;代码段;=====A1+A2结果存放到AX中=====MOV AX,A1MOV BX,A3ADD AX,BX;=======七种寻址方式=====MOV BX,A4 ;立即数寻址,将a4的值赋到bx中mov AX,BX 将BX的值传送到AX,;MOV BX,[2000] ;直接寻址,bx的值由ds和所给的偏移地址确定SUB AX,BX ;AX-BX并将结果存入AX中MOV BX,AX ;寄存器寻址,将AX中的操作数赋值到BX中ADD AX,BX ;将BX于AX的值相加,并将结果存入AX中。
MOV CX,AX ;将AX的值赋到CX中。
MOV AX,[BX] ;寄存器间接寻址,操作数的物理地址由堆栈段寄存器SS与BX中的偏移地址构成;SUB AX,CX ;AX-CX并将结果存入AX中MOV BX,COUNT[BP]; 基址寻址,偏移地址是指令中给定的偏移量count和基数指针BP的内容之和。
实验2 顺序与分支汇编语言程序设计实验
ARM技术原理与应用实验报告实验2 顺序与分支汇编语言程序设计实验专业电子信息工程班级14电信班学生姓名陈定光学号2014010243101指导教师曹计昌2017年4月19 日实验2 顺序与分支汇编语言程序设计实验1、实验目的(1)掌握顺序结构汇编语言程序设计;(2)掌握分支结构汇编语言程序设计;(3)掌握AXD环境下顺序结构和分支结构汇编语言程序的运行、调试。
2、实验要求1、实验必须在在ADS1.2环境下进行。
2、工程名、汇编语言源文件名按照下面规则命名:工程名:pj+学号最后4位+其它字符汇编语言源文件名:p+学号最后4位+其它字符+.s例如:张维智同学学号最后4位是3134因此,pj3134、pj3134a、pj31341等都是允许的工程名;而 p3134a.s、p3134b.s等都是允许的源文件名。
3、实验报告中需要说明实验中在ADS、AXD环境下进行的实际操作;4、实验报告中应给出实际的实验操作、编写的源程序、及计算机的调试观察结果;5、按照规定格式打印实验报告。
3、实验内容1、编写程序p2xxxx1.s完成下面任务:(1)将1、2、3、4、5、6、7、8依次传送给寄存器R1-R8;分析:如上图显示,寄存器r1-r8分别是存放1-8(2)用STMIA指令将R1-R8保存到刚好能够存储8个字数据ARY_A数组中。
分析:如上图显示,地址0x8058-0x8078分别存放1-8(3)用STMIB指令将R1-R8保存到刚好能够存储8个字数据ARY_B数组中。
分析:如上图显示,地址0x8088-0x80A7分别存放1-8(4)用STMDA指令将R1-R8保存到刚好能够存储8个字数据ARY_C数组中。
分析:如上图显示,地址0x8094-0x80B3分别存放1-8(5)用STMDB指令将R1-R8保存到刚好能够存储8个字数据ARY_D数组中。
(6)用LDMIA指令将ARY_A数组中数据5、6、7、8传送到R1-R4寄存器。
顺序结构程序设计实验报告
顺序结构程序设计实验报告顺序结构程序设计实验报告引言顺序结构是计算机程序设计中最基础的结构之一,它按照代码的书写顺序依次执行,没有条件判断或循环控制。
本实验旨在通过实践,加深对顺序结构的理解,并掌握其在程序设计中的应用。
实验目的通过编写程序,实现以下目标:1. 熟悉编程环境的搭建和基本操作;2. 掌握顺序结构的概念和使用方法;3. 运用顺序结构设计一个简单的计算器。
实验过程1. 编程环境搭建在实验开始前,我们先搭建编程环境。
选择一款编程软件,如Python或C++,并安装到计算机上。
打开软件后,创建一个新的项目或文件,以便开始编写代码。
2. 顺序结构的实现顺序结构的实现非常简单,只需按照代码的书写顺序编写即可。
在本实验中,我们将使用Python语言来实现顺序结构。
首先,我们定义两个变量a和b,用于存储用户输入的两个数字。
然后,我们使用input()函数来获取用户输入,并将其转换为整数类型。
代码如下:```a = int(input("请输入第一个数字:"))b = int(input("请输入第二个数字:"))```接下来,我们定义一个变量sum,用于存储两个数字的和。
通过将a和b相加,将结果赋值给sum变量。
代码如下:```sum = a + b```最后,我们使用print()函数将计算结果输出到屏幕上,让用户可以看到最终的结果。
代码如下:```print("两个数字的和为:", sum)```3. 编译和运行程序在编写完代码后,我们需要将其编译并运行。
编译的过程会将代码转换为计算机可以理解和执行的形式。
在Python中,不需要显式地进行编译,可以直接运行代码。
点击运行按钮或使用命令行工具运行程序,即可看到程序输出的结果。
根据用户输入的不同数字,程序将计算并输出它们的和。
实验结果经过编译和运行,我们成功实现了一个简单的计算器。
用户可以输入任意两个数字,程序会将它们相加并输出结果。
汇编语言实验报告
实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATA BEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤(1)编写源程序。
汇编语言实验报告
汇编语言实验报告一、实验目的本次汇编语言实验的主要目的是通过实际操作和编程实践,深入理解汇编语言的基本概念、指令系统和编程方法,提高对计算机底层硬件操作的认识和编程能力。
二、实验环境1、操作系统:Windows 102、编程工具:MASM(Microsoft Macro Assembler)三、实验内容1、数据传送与算术运算实现两个 16 位整数的加法和减法运算,并将结果存储在指定的内存单元中。
使用不同的数据传送指令,如 MOV、PUSH、POP 等,将数据在寄存器和内存之间进行传输。
2、逻辑运算与移位操作对给定的 8 位二进制数据进行逻辑与、或、异或运算,并观察结果。
执行移位操作,包括逻辑移位(SHL、SHR)和算术移位(SAL、SAR),理解移位对数据的影响。
3、分支与循环结构使用条件跳转指令(如 JZ、JE、JC 等)实现根据不同条件执行不同代码段的功能。
编写循环结构程序,如使用 LOOP 指令实现对数组元素的求和操作。
4、子程序调用定义一个子程序,实现特定的功能,如计算一个数的阶乘。
在主程序中调用子程序,并传递参数和获取返回值。
四、实验步骤1、数据传送与算术运算实验首先,在代码编辑器中编写汇编代码,定义数据段和代码段。
在数据段中初始化两个 16 位整数,例如 MOV WORD PTR DATA1, 1000H 和 MOV WORD PTR DATA2, 2000H 。
在代码段中使用 ADD 和 SUB 指令进行加法和减法运算,如 ADD WORD PTR RESULT_ADD, DATA1 和 SUB WORD PTRRESULT_SUB, DATA2 。
编译和链接代码,生成可执行文件。
运行程序,查看内存中存储的运算结果。
2、逻辑运算与移位操作实验类似地,定义数据段和代码段。
在数据段中初始化 8 位二进制数据,如 MOV AL, 01010101B 。
在代码段中使用AND、OR、XOR 指令进行逻辑运算,以及SHL、SHR、SAL、SAR 指令进行移位操作。
汇编语言实验报告
实验报告一:汇编语言实验基础一.实验目的:1. 熟悉汇编语言程序的开发过程以及汇编语言常用软件的使用方法2. 掌握DEBUG常用命令的使用方法二、实验内容:1.DEBUG 命令使用2.8088常用指令练习三、实验步骤:(一)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的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
(二)8088常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序,特别注意左边的机器码。
3)用T命令逐条运行这些指令,注意有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。
8086 汇编语言顺序程序设计
汇编语言程序设计实验报告学院:计算机科学与技术学院专业:计算机科学与技术班级:计科131MOV AX,WORD PTR N1MOV DX,WORD PTR N1+2MOV CX,WORD PTR N2MOV BX,WORD PTR N2+2ADD AX,CXADC DX,BXMOV WORD PTR N3,AXMOV WORD PTR N3+2,DXMOV AH,4CHINT 21HCODE ENDSEND START使用相应的文本编辑器建立文件two.asm,内容如上所示。
二. 生成可执行文件:1.汇编:C:\masm> masm two;2.连接:C:\masm> link two;三.运行及调试:1. 运行:C:\masm>debug two.exe-U0 ;通过反汇编查找程序的断点-T=0 2 ;加载数据段-D0 ;查看原始数据是否正确-G=0 1F ;运行程序至断点1F 处-D0 ;查看程序运行结果2.调试:若要判断此程序对于其它32 位数相加是否正确,则需要使用DEBUG 进行程序调试。
实验二:编程实现:将从2000H 单元开始的连续128 个单元的内容进行清零一. 编程CODE SEGMENTASSUME CS:CODE,DS:CODESTART:MOV BX,2000HMOV CX,128MOV AL,00HL1:MOV [BX],ALINC BXLOOP L1MOV AH,4CHINT 21HCODE ENDSEND START二.使用编辑器建立源程序文件four.asm。
三.生成可执行文件:1.汇编:C:\masm> masm four;2.连接:C:\masm> link four;四.运行及调试:1. 运行:C:\masm>debug four.exe-D2000;-R;-D CS:2000;-G;-D2000;实验三:编程实现:将3000H 单元的一个字节的内容进行拆分,高半字节放进3001H 单元的低半部分,其低半字节放进3002H 单元的低半部分一、编程源程序:DATA SEGMENTN0 DW 3000HN1 DW 3001HN2 DW 3002HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV BX,N0AND BX,0FHMOV AX,N2MOV AX,[BX]MOV BX,N0MOV CL,4SHR AX,CLMOV AX,N1MOV AX,[BX]MOV AH,4CHINT 21HCODE ENDSEND START二.使用编辑器建立源程序文件five.asm。
顺序结构程序设计实验报告
《汇编语言程序设计》实验报告实验名顺序结构程序设计实验室实验楼实验日期2014-05-05add ax,Zmov W,ax ;X,Y,Z之和存入W中retmain endpcode ends ;代码段结束end start3.调试过程:(1).用masm程序产生mwn1.obj文件,编译没有错误,如下图:(2).用link程序产生mwn1.exe文件,连接没有错误,如下图:(3).进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为5,6,7,接着下一个字的内容为0:(5).用t命令单步执行,前三次为初始化,具体的如下图:(6)用t命令执行,如下图,将[0000]单元中的内容05h传给ax,ax中的内容为0005,将[0002]单元中的内容和ax相加,并把结果存放在ax中,ax中的内容为000b=(5+6)(7)用t命令执行,如下图,将[0004]单元中的内容0bh和ax相加,并把结果存放在W中,W 中的内容为0012=(0b+7)题目二:1.设计:首先,在数据段中,定义字符串存放在变量s1中,同时申请一个字单元,用标号s2来表示,用来存放计数次数;在代码段中,首先初始化,然后,根据cld与rep的组合递减,将字符一个一个根据地址的指示按顺序输出。
2.源程序清单data segments1 db 'This is a program!$'count equ $-s1 ;变量count代替$-s1s2 db count dup(?)data ends ;定义数据段,变量s1为字符串'This is a program!$',;变量s2是重复计数次数code segment ;代码段assume cs:code,ds:data,es:datastart:mov ax,datamov gtmov es,ax ;初始化mov si,offset s1 ;将变量s1的偏移地址放入寄存器si中mov di,offset s2 ;将变量s2的偏移地址放入寄存器di中mov cx,count ;将计数次数存入寄存器cx中Cldrep movsb ;在字符串的比较,di或si是可以自动增减,即si,di向前移动mov dx,offset s2mov ah,9int 21hmov ax,4c00hint 21h ;输出结果code endsend star t3.调试过程:(1).用masm程序产生mwn2.obj文件,编译没有错误,如下图:(2).用link程序产生mwn1.exe文件,连接没有错误,如下图:(3).进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为This is a program!$,接着下一个字的内容为0:(5)用t命令单步执行,前三次为初始化,具体的如下图:(6)用t命令执行,如下图,将偏移地址存入si,di;(7)用t命令执行,如下图,命令执行count次数;(8)执行结果,如下图:题目三:查表法,实现一位16进制数转换为ASCII码显示1.设计:首先,在数据段中,定义0~9的ASCII码、A~F的ASCII码,并设定一个待转换的数;(1)用masm程序产生mwn3.obj文件,编译没有错误,如下图:(2)用link程序产生mwn3.exe文件,没有错误,如下图:(3)进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为5,6,7,接着下一个字的内容为0:(5).用t命令单步执行,前三次为初始化,具体的如下图:(6)用t命令执行,如下图,将BX指向ASCII码表;(7)用t命令执行,如下图,AL取得一位16进制数,即ASCII码表中位移;(8)用t命令执行,如下图,高4位清0,只有低4位有效;(9)用t命令执行,如下图,换码过程;(10)用t命令执行,输出结果B,如下图:。
顺序结构实验报告结论(3篇)
第1篇实验名称:顺序结构实验一、实验背景顺序结构是程序设计中的一种基本结构,它按照一定的顺序执行程序中的语句。
为了验证顺序结构在程序设计中的有效性和实用性,我们设计并实施了一系列的实验。
本实验旨在通过实际操作,分析顺序结构在程序执行过程中的表现,并得出相应的结论。
二、实验目的1. 验证顺序结构在程序执行过程中的正确性;2. 探究顺序结构在程序设计中的实际应用;3. 分析顺序结构在程序运行效率方面的表现;4. 为程序设计提供一定的理论依据。
三、实验方法1. 实验环境:Windows操作系统,Visual Studio 2019开发环境;2. 实验工具:C++编程语言;3. 实验步骤:(1)设计一个简单的顺序结构程序,实现基本功能;(2)逐步增加程序复杂度,观察顺序结构在程序执行过程中的表现;(3)对比分析不同顺序结构程序在运行效率方面的差异;(4)记录实验数据,分析实验结果。
四、实验结果与分析1. 实验一:验证顺序结构在程序执行过程中的正确性实验结果:通过实际运行程序,发现顺序结构程序能够按照预期顺序执行,完成基本功能。
这表明顺序结构在程序执行过程中的正确性得到验证。
2. 实验二:探究顺序结构在程序设计中的实际应用实验结果:在程序设计中,顺序结构被广泛应用于各种场景,如数据输入、输出、循环控制等。
通过实际应用顺序结构,可以简化程序逻辑,提高代码可读性。
3. 实验三:分析顺序结构在程序运行效率方面的表现实验结果:在实验过程中,我们对比了不同顺序结构程序在运行效率方面的差异。
结果表明,顺序结构程序在执行过程中具有较高的运行效率,特别是在处理简单逻辑时。
4. 实验四:记录实验数据,分析实验结果实验结果:通过对实验数据的分析,我们发现顺序结构程序在执行过程中具有较高的稳定性和可靠性。
同时,顺序结构在程序设计中的应用有助于提高代码的可维护性和扩展性。
五、结论1. 顺序结构在程序执行过程中的正确性得到验证;2. 顺序结构在程序设计中的实际应用广泛,有助于简化程序逻辑,提高代码可读性;3. 顺序结构程序具有较高的运行效率,特别是在处理简单逻辑时;4. 顺序结构在程序设计中的应用有助于提高代码的可维护性和扩展性。
汇编语言实验2-顺序程序设计
汇编语言实验报告Assembly Language Programming Lab Reports______________________________________________________________________________班级: _________ 姓名:___________ 学号:___________ 实验日期:_____________学院: _____计算机与通信工程学院____ 专业:_______计算机科学与技术___________实验顺序:___实验二____ 实验名称: ___________顺序程序设计________________ 实验分数:_______ 考评日期:________ 指导教师:______________________________________________________________________________一.实验目的1.掌握非压缩的BCD码运算及其调整办法。
2.掌握Dos功能调用int 21h的1,2,9,10号功能。
3.掌握Bios功能调用int 10h的3号功能。
______________________________________________________________________________二.实验环境操作系统:windows xp编译程序:masm 5.0______________________________________________________________________________三.实验原理1.dos功能调用,利用10号dos功能调用,输入一串字符串,利用9号dos功能调用,输出显示之前输入的字符串代码如下:2.利用int10h获得光标的行列号,算出相应在显存的位置,输出想要的字符代码如下:3.输入是转化由ascii码转成实际十六进制数,mul相乘后,采用非压缩bcd码相乘调整aam,高位低位分别采用非进位加法和进位加法,最后转回ascii码输出代码如下:______________________________________________________________________________四.实验步骤及结果分析1.Dos功能调用。
汇编语言顺序程序设计实验报告
实验名称:汇编语言顺序程序设计实验报告实验目的:通过本次实验,学生能够掌握使用汇编语言编写顺序程序的基本方法,理解汇编语言的基本结构和运行机制。
实验内容:1. 汇编语言基础知识1.1 汇编语言的概念1.2 汇编语言的特点1.3 汇编语言的应用领域2. 汇编语言程序设计2.1 程序设计的基本流程2.2 程序设计的基本步骤2.3 汇编语言程序设计的规范与技巧3. 实验步骤3.1 确定实验题目和要求3.2 分析实验任务,设计程序流程图3.3 编写汇编程序3.4 调试程序,确保程序正确运行3.5 编写实验报告4. 实验报告要求4.1 实验题目4.2 实验目的4.3 实验内容和步骤4.4 程序设计思路和实现方法4.5 实验结果分析和讨论4.6 实验心得体会实验过程:1. 确定实验题目和要求本次实验的题目为“汇编语言顺序程序设计”,要求学生使用汇编语言编写一个顺序程序,实现指定的功能要求。
2. 分析实验任务,设计程序流程图在开始编写汇编程序之前,我们首先要明确实验的功能需求,然后设计程序的流程图,规划程序的整体结构。
3. 编写汇编程序在设计好程序流程后,根据汇编语言的语法规则,编写相应的程序代码,并确保程序的逻辑正确,语法无误。
4. 调试程序,确保程序正确运行编写完成程序后,需要对程序进行调试,逐步检查程序运行过程中的各个环节,发现并修复可能存在的错误。
5. 编写实验报告我们需要撰写本次实验的实验报告,详细记录实验的整体过程,包括程序设计思路、程序实现方法、实验结果分析和讨论,以及实验心得体会。
实验结果分析和讨论:经过本次实验,我们掌握了汇编语言顺序程序设计的基本方法和技巧,了解了汇编语言程序设计的规范和要求。
在实验过程中,我们遇到了一些问题和困难,但通过不懈的努力和团队合作,最终成功完成了实验任务,并取得了令人满意的成绩。
实验心得体会:通过本次实验,我们深刻认识到汇编语言在计算机领域中的重要性和应用价值,同时也意识到汇编语言程序设计的复杂性和技术挑战。
汇编语言编程实验报告
汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。
)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。
4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。
如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。
一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。
将包含QE文件的工作磁盘插入驱动器A:。
进入QEA\QE进入全屏幕后可以开始编程。
文件名取为Myprog。
asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。
汇编实验报告:汇编程序的汇编及运行_顺序程序设计_分支循环程序设计_子程序设计_dos功能调用
福建农林大学东方学院信息工程类实验报告课程名称:汇编语言*名:***系:计算机系专业:电子信息工程年级:2010学号:1050302103指导教师:职称:2012年 6 月17 日福建农林大学东方学院信息工程类实验报告系:计算机系专业:电子信息工程年级: 10 姓名:廖少兵学号: 1050302103 实验课程:汇编语言实验室号:_______ 实验设备号:实验时间:指导教师签字:成绩:实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验的原理和主要仪器设备IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DA TA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)DA TA SEGMENTV AR1 DB 0, 25, ODH, 300V AR2 DB 12H, A4H, 6BHV AR3 DB ’ABCDEF’V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DA TABEING MOV AX, DA TAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV [SI], 0ABHMOV AX, V AR1+2MOV [BX], [SI]MOV V AR5+4, V AR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DA TASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.操作方法及实验步骤编写各代码并存储为源程序asm文件,对其进行汇编、连接。
汇编语言实验报告
汇编语言实验报告实验一、汇编运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串string1和string2所含的字符是否相同。
若相同’,否则显示‘No match’。
则显示‘Match在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1’和‘Nomatch’。
再代码段比较字符串string1和string2,和mess2,分别代表‘Match通过比较判断是否相同。
若相同则显示‘Match’,否则显示‘No match’。
二、调试说明再EDIT中建立ASM文件,再用汇编程序对源程序汇编产生目标文件Obj,再用连接程序产生执行文件EXE。
再用Debug进行调试。
其中常用到的指令有:用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存用器和修改寄存器的值,-q命令用来退出debug程序。
在这些命令的后面加上地址,可以将命令执行到相应的地方。
如用-g指令运行程序后,再用-u指令显示程序的执行借给如下:若将string2改为'Move the cursor backwards.',程序的其他部分不做改动,执行结果:若将mov cx,25语句改成mov cx,24,结果为:此时少做了一次循环,得到的结果就不正确了。
实验二、用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等一、程序说明本实验包括两个部分,第一个部分是将AX和BX的内容进行交换,并用堆栈作为两寄存器交换内容的中间存储单元;第二部分是用DEBUG的命令将存储器偏移地AH, 0BH,0CH,0DH,0EH。
在DEBUG状态址300H,304H连续单元顺序装入0 下送入给出的程序中。
第一个程序先将AX的内容进栈,然后将BX的内容赋给AX,再将出栈的内容赋给BX即可。
第二个程序是在进入debug后,用-a指令输入给出的程序,然用-r指令安要求修改内存的内容,再用-t指令逐步执行每条指令,看修改的内存内容对指令执行结果的影响。
汇编实验报告
实验一(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所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验实验目的:1. 掌握顺序结构程序的基本设计方法;2. 掌握数据传送指令和算术运算指令的用法;3. 掌握逻辑操作指令和移位操作指令的用法;4. 掌握状态标志位操作指令的用法;5. 掌握简单的I/O 功能调用。
实验要求1. 熟练掌握DEBUGS的U,D,E,G命令的使用方法;2. 学会利用系统功能调用,来实现键盘输入字符、显示字符的方法;3. 了解大、小写字母及数字在计算机中的表示方法及转换方法。
实验容题目SUM单元编写十六进制的乘法程序。
要求从键盘上输入两个一位十六进制数据,乘积存入以下是我的汇编程序代码:DSEG SEGMENTSUM DW ?HTAB DB '0123456789???????ABCDEF'HTAA DB '0123456789ABCDEF'DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV AH,01HINT 21HMOV DL,'*'MOV AH,02HINT 21HSUB AL,30H LEA BX,HTAB XLATMOV DL,ALMOV AH,01H INT 21H SUB AL,30H XLAT MOV BL,DL MUL BLMOV SUM,AXMOV BL,ALMOV CL,ALMOV DL,'=' MOV AH,02H INT 21H SHR BL,4 MOV AL,BL LEABX,HTAA XLAT MOV DL,BL MOV AH,02H INT 21H AND CL,0FHMOV AL,CL XLAT MOV DL,AL MOV AH,02H INT 21H MOV DL,'H'MOV AH,02H INT 21HMOV AH,4CHINT 21H CSEG ENDSEND START结果该程序不仅将结果存入了sum且显示在了屏幕上,经测试无溢出。
调试,改错在执行INT 21H 指令后,AL 寄存器中的容被改变,于是我将 AL 用DL 保存起来后重新 执行,发现仍然会显示乱码,进一步进行单步指令执行后,我发现 ,寄存器AL ,在转存过程中被我记成了 BL 。
经过修改终于完成。
严AH=fi23i BX=fl919 CK=1E04DH=flO3DftP-8000 BP=0000SI-0000 DJ-flP00DS=CB3CES=0B2CSS=0B3CCS=0B3PIP=B83FHU UP ITPL HZ HA PO CV1M 怕MC UDL,-PIX-0231CX=LE04 DX=-fl019 $P 吨盹BP^aaea SI ^-8003 DI ^-0000 PS-0B3C E8-0B2G SS "0B3G GS-6B3FIP-0041NU UP II PL NZ Nfl PO CY0B3F ;O041MO 他-PAX=023t =0019CK=£E04DX =0019£P=00O0BP=900851=0000DI=000QDS=«B3C EG=0B2CSS=MB3CCS=flB3FI P=0(i43MU UP 卫IPL HZ HA PO C¥SB3F :0043CD21 INT 211K=0233BK=00RfiDK =00KABP=0BHHSI DI =00fl (5ES=0B2C SS=0B3CC£=083FIF=B00DNU UP ElFL NZ NA PO NC-PI CD21INT21CK =0087 DX -QB2ABF-0000BI=0尅00 BI=00阳 &S=0B3CES-0B2C SS-0B3C CS=0B3F IP-009FNU UP El PL NZ NA PO NC:2C30SUE f 叽 30在实验过程中,有几个问题出现了, 首先,一开始在编写代码过程中,由于我没有给输入容表加逗号,导致数据溢出而使编译无法通过,经过修改后终于通过了编译。
但是之后结果一直都显示为同一个数字, 经过单步指令语言执行后, 我得到了以下的结果:开始我编写了一个利用转移指令完成的汇编程序,能够顺利将结果保存到 AX 和sumB3F :0P100 B3F :0003B3F=00B5B3F :0007B3F :00S9 S3F :W00H B3F :000D B3P-000F B3F :00L1 B3F=0013 B3F :00L5 B3F :0019 B3F :001A B3Fr001CB3F=001EB83C0BHEDR B401 CD218AE8 B22A B402 CD21 0fiC5 2C308D1E0200 D? 8AD0 B401 CD2inou NOU MOU INI MOV MOU MOU I NT noi SUB LEA KLAT HOU HOU INIB x l L AS H 06 @"s @A 2 0 C 3[ 严A F"b q JF尸>>X S H 1H L H 1L L X Dio AL AH,61 21a.a 2L J !T 5r TT 一4-^;r sr ff Tr Tr —19002 3 泅 0 9磁D7 B023 SABA 9025 FGE30027 M9000 1302 A 怡DE S02C »AES 财2E B23D0930 B40Z 0032 CD21 0034 Bl 94 mG I>2EB 083A BD1E17B0 0酣 E »?F 呂白DP0041 B402 00羽 CD21 盼15 S0E50F 朋4H BAC5 064A DV »fl4B SADQ 004D B402 004F CD210aSl B248胸盟B402 购55 CD21 0057 B401 0059 CD21 09&B 2301 005D 2E 005E 8S3G579X E A u L u u UU U T U E U A A U U L O U O O O O O N O H O E L O U I D U A U U IU m u I D --u O N N O L O O N O O N O N N S O BL,DL BL [WebAK BL.AL CH^L DL.3D AH,B2 21BX.18S1?]DL.AL21 CH,0F AL, CH1H 1L H 1H I XAL92 [BW+DI [9157],SIG^0开A =1EHX=01(JDBX=601^ CX-6E04 DM =0346 BP=0000 S1 =3000 DI =8090 iS^0B7C ES=0B2C SS-0E3G CS=0B3F IP^B05B NV UF El FL HZ : NA PO KC IB3F :O05B 2391 AND flX,tBX+EI] DS =0019=3130以及储存器的最终状态 以及存的最终状态,其中 0000为SUM 以3*A=1E 为例,sum 在第一个单元。
c c c cc c cIE 腼 37 BS 21 2C B4 D00 08c A 0 2 4 0 033D7 CD 02 01 泅 41 BE 2C 8A 21 CD 02 OB 42 D8 30 DA Bl 213C 34D 6408O 4B 8F 0844 01 IE E3 D2 E5 05—恥 0E-BF 45-4€ CD-21 02 -00 A3-00 EB-8A 0F-8A即 3B Q0 BA D7 色口 C3 C58108A A D 7 030E 000P920208E A030B D D 18 33 2ft B4 19 0&0D 1D A D030C 23B C ....................................... 01234E6 ?89ftBCDEF .......如下:SSEG SEGMENT STACK STK DB 20 DUP(0) SSEG ENDS DSEG SEGMENT SUM DW ? DSEG ENDS CSEG SEGMENTASSUME CS:CSEG,DS:DSEGASSUME SS:SSEG START:MOV AX,DSEGMOV DS,AXMOV AX,SSEGMOV SS,AXMOV SP,LENGTH STKMOV AH,01H INT 21H CMP AL,'A' JAE ABOVE1 SUB AL,'0' MOV BL,AL JMP NEXT1 ABOVE1: SUB AL,'A' ADD AL,10 MOV BL,AL NEXT1: MOV AH,01H INT 21H CMP AL,'A' JAE ABOVE2 SUB AL,'0' JMP NEXT2 ABOVE2: SUB AL,'A' ADD AL,10 NEXT2: MUL BLMOV SUM,AX MOV AH,4CH MOV AL,0 INT 21H CSEG ENDSEND START以下是反汇编容能够顺利将结果保存到 AX 和sum。