汇编语言顺序结构实验报告

合集下载

汇编语言实验报告

汇编语言实验报告

合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一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 顺序与分支汇编语言程序设计实验

实验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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档