山东大学汇编语言上机实验——实验二

合集下载

汇编语言上机实验内容

汇编语言上机实验内容

实验一上机操作一、实验目的掌握汇编语言程序编辑、汇编、连接、运行以及利用DEBUG调试程序的方法。

二、实验设备PC机及相应的软件。

三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。

2、利用DEBUG进行程序调试,掌握常用命令的使用方法,观察运行结果。

3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。

上机操作过程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDIT ABC.asmc:\masm>MASM ABC;若有语法错,回EDIT下改该程序c:\masm>LINK ABC;若有错,回EDIT下改程序c:\masm>ABC若运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。

c:\masm>DEBUG ABC.exe手写源程序图 1-1 汇编语言上机操作流程汇编语言程序举例例1:将BL寄存器的内容按二进制形式显示出来。

设:(BL)=01010011B分析:采用2号功能调用,分别输出30 31 30 31 30 30 31 31显示:01010011参考程序:CODE SEGMENTASSUME CS: CODESTART:MOV CX ,8 ;显示字符个数为8MOV BL ,53HNEXT:SHL BL ,1 ;将显示位移至CF中JC ONE ;CF=1?MOV DL ,30H ;CF=0,将0的ASCII放在DL中JMP EXITONE:MOV DL ,31H ;CF=1,将1的ASCII放在DL中EXIT:MOV AH ,2INT 21H ;调用DOS功能显示DEC CX ;循环次数减1JNZ NEXT ;判断是否结束MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START上机操作:c:\masm>EDIT ShowBL.asm ;编辑源程序c:\masm>MASM ShowBL ;汇编成ShowBL.objMicrosoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成ShowBL.exeMicrosoft (R) Overlay Linker Version 3.61Copyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行ShowBL.exe 01010011 ;屏幕显示c:\masm>-在DEBUG下查看ShowBL.exe的装入情况:c:\masm>DEBUG ShowBL.exe- R ;查看当前寄存器内容AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B51 ES=0B51 SS=0B61 CS=0B61 IP=0000 NV UP EI PL NZ NA PO NC B353 MOV BL,53- U CS:0 ;查看程序0B61:0000 B353 MOV BL,530B61:0002 B90800 MOV CX,00080B61:0005 D0E3 SHL BL,10B61:0007 7205 JB 000E…….0B61:0017 B44C MOV AH,4C0B61:0019 CD21 INT 21…….-G ;执行程序01010011Program terminated normally-例2:将某段中的字符串“Hello!”传送到另一段中。

汇编语言上机实验指导书

汇编语言上机实验指导书

《汇编语言》实验指导书计算机实验中心目录目录::实验一利用DEBUG调试程序调试程序段 (4)实验二分支程序实验 (5)实验三循环程序实验 (8)实验四子程序实验(一) (9)实验五子程序实验(二) (13)实验六字符处理程序实验 (19)实验七输入输出实验 (23)试验八中断程序试验 (28)汇编语言上机实验指导书一、概述上机实验总学时为18学时,其中综合性和设计性实验至少为8学时。

实验的次数暂定为8次,每次2-3学时,可结合实际条件适当增减,但不少于6次。

1.实验辅导的主要内容实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备;实验步骤;实验报告要求;实验程序及参考框图。

开始的实验介绍较细,后面的实验简要介绍。

2.实验的软硬件要求关于汇编语言程序设计的硬件要求不高,有IBM-PC/XT即可,但应有彩色显示器以便进行图形实验。

软件方面应有MASM.EXE5.0版(包括LINK.EXE),与MS-DOS版本配套的DEBUG 程序和EDIT.EXE编辑软件(其它编辑软件也可以)。

3.加强实践能力的培养实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。

其中包括:实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等;开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS 功能调用的能力,进行模块程序设计的能力等。

对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或本分改变程序加以实现。

实验一利用DEBUG调试程序调试程序段1.实验目的:(1)熟悉DEBUG有关命令的使用方法(2)利用DEBUG掌握有关指令的功能(3)利用DEBUG运行简单的程序段2.实验内容(1)进入和退出DEBUG程序(2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

山大单片机实验

山大单片机实验

单片机实验报告孙洪悦2011实验1:汇编程序实验1自我完成实验(1)实验内容将片内RAM 30H 单元中的8 位二进制数转换成10 进制数。

希望转换后的结果保存于31H和32H,31H 低 4 位存放个位,高 4 位存放十位,32H 低 4 位存放百位,高 4 位为0自我完成实验程序ORG 0000H!AJMP MAINORG 0030HMAIN:MOV SP,#62H ;MOV 30H,#0AFH ;先将30H写上100MOV R0,#32H ;将百位地址送R0MOV A,30H ;这句写错了,应该是将30H的内容送给A,而不是30H,我误写成了#30HMOV B,#64H ;除数为100DIV AB ;AB相除…MOV @R0,A ;将百位的数送给32H地址MOV A,B ;将余数送给AMOV B,#0AH ;将10送BDIV AB ;AB相除SWAP A ;高低四位交换DEC R0 ;R0减1 到31HMOV @R0,A ;将十位送31H的高四位MOV A,BANL A,#0FHORL 31H,A ;31高低四位分别存十和百位~SJMP $END总结与提高:本程序用了一个小算法,一个三位数数X除以100,商a为百位,余数为:X-100*a 再用此余数除10,商为十位,余数为个位。

实验2:汇编程序实验2自我完成实验(1)实验内容:将片内RAM 30H 开始的32 个单元中分布着随机的有符号8 位二进制数,请按从小到大的顺序进行排序,排序后的数据仍然保存到30H 开始的32 个单元中(低地址存放小数据)。

程序及其注释②自我完成实验程序第一种排序方法:ORG 0000HAJMP MAINORG 0090H:MAIN:MOV SP,#62H ;MOV A,#0HMOV R1,#30HMOV R7,#20HMOV DPTR,#TABLEMOV R0,#1FH ;执行31次LOOP1:MOVC A,@A+DPTR}MOV @R1,AINC R1INC DPTRMOV A,#0HDJNZ R7,LOOP1 ;执行32次循环,在30-4F写表格数据LOOP2: MOV R1,#30H ;将起始地址给R1MOV A,R0 ;R0为执行31次MOV R2,A ;把进行一次冒泡的次数存到R2中|LOOP3:CLR C ;清CMOV A,@R1 ;;比较开始,取第一个数MOV R3,A ; 腾出累加器INC R1 ;指向下一个地址SUBB A,@R1 ;取后一个数,并与前一个数相减,看是否有CY位溢出,溢出则说明前一个数小,要换位JC LOOP4 ;前一个数小的情况下,两个数交换位置,否则,继续执行MOV A,R3 ;把后一个数存到累加器下XCH A,@R1 ;累加器的数与R1指向的数交换位置,即;前一个数和后一个数交【DEC R1 ;R1自减,准备将后面的数存到前面MOV @R1,A ;将后面的数存到前面INC R1 ;R1自增,准备下次转换,以上五行为交换LOOP4: DJNZ R2,LOOP3 ;R2自减,为下次冒泡准备DJNZ R0,LOOP2 ;跳回去进行下一轮冒泡SJMP $·ORG 30HTABLE: DB 1,3,9,2,17,4,11,6DB 5,20,100,64,21,14,79,35DB 92,7,91,23,65,16,13,18DB 18,73,65,101,27,19,62,69END第二种排序方法;!ORG 0000HAJMP MAINORG 0090HMAIN:MOV SP,#62H ;MOV A,#0HMOV R1,#30HMOV R7,#20HMOV DPTR,#TABLEMOV R0,#1FH ;执行31次(LOOP1:MOVC A,@A+DPTRMOV @R1,AINC R1INC DPTRMOV A,#0HDJNZ R7,LOOP1 ;执行32次循环,在30-4F写表格数据…LOOP2: MOV R1,#30H ;将起始地址给R1MOV A,R0 ;R0为执行31次MOV R2,A ;把进行一次冒泡的次数存到R2中MOV R4,#30H ;R4存的是最大数的位置LOOP3:CLR C ;清CMOV A,@R1 ;;比较开始,取第一个数MOV R3,A ; 腾出累加器INC R1 ;指向下一个地址、MOV A,@R4SUBB A,@R1 ;取后一个数,并与前一个数相减,看是否有CY位溢出,溢出则说明前一个数小,要换位JC LOOP4 ;前一个数小的情况下,两个数交换位置,否则,继续执行;MOV A,R3 ;把后一个数存到累加器下;XCH A,@R1 ;累加器的数与R1指向的数交换位置,即;前一个数和后一个数交;DEC R1 ;R1自减,准备将后面的数存到前面;MOV @R1,A ;将后面的数存到前面;INC R1 ;R1自增,准备下次转换,以上五行为交换>DJNZ R2,LOOP3 ;R2自减,为下次冒泡准备LOOP4:MOV A,R1 ;MOV R4,ADJNZ R2,LOOP3DJNZ R0,LOOP2 ;跳回去进行下一轮冒泡SJMP $#ORG 30HTABLE: DB 1,3,9,2,17,4,11,6DB 5,20,100,64,21,14,79,35DB 92,7,91,23,65,16,13,18DB 18,73,65,101,27,19,62,69END.总结与提高:所谓冒泡法,有两种理解方式:1.相邻的两个数比较,大的数放后一个位置,直到一轮循环后,最后一个数为此轮遍历的最大的数。

实验二_汇编语言程序上机过程

实验二_汇编语言程序上机过程

实验二:汇编语言程序上机过程实验目的:1、掌握常用工具EDIT,MASM和LINK的使用。

2、伪指令:SEGMENT, ENDS, ASSUME, END, OFFSET, DUP。

3、掌握汇编源程序的基本架构4、了解.EXE文件及用INT 21H 4C号功能返回系统的方法。

源程序1:;This is an simple example;--------------------------------------------data segment ;define data segmentmsg db 'hello,everybody!',0dh,0ah,'$'data ends;-------------------------------------------code segment ;define code segmentassume ds:data,cs:codestart:mov dx,data ;set ds segmentmov ds,dxlea dx,msg ;display stringmov ah,9int 21hmov ax,4c00h ; returnint 21hcode ends;--------------------------------------------end start源程序2:;program title goes here----ex_movs;*********************************************data segment ;define data segmentsource_buffer db 40 dup('a')data ends;****************************************************** extra segment ;define extra segmentdest_buffer db 40 dup(?)extra ends;****************************************************** code segment ;define code segment;------------------------------------------------------main proc far ;main part of programassume cs:code, ds:data, es:extrastart:;set up stack for returnpush ds ;save old data segmentsub ax, ax ;put zero in AXpush ax ;save it on stack;set DS register to current data segmentmov ax, data ;data segment addrmov ds, ax ;into DS register;set ES register to current extra segmentmov ax, extra ;extra segmentmov es, ax ;into ES register;main part of program goes herelea si, source_buffer ;put offset addr of source buffer in SI lea di,dest_buffer ;put offset addr of dest buffer in DIcld ;set DF flag to forwardmov cx,40 ;put count in CXrep movsb ;mov entire stringret ;return to dosmain endp ;end of main part of program;------------------------------------------------------------code e nds ;end of code segment;************************************************************end start ;end assembly实验步骤:1、用文字编辑工具EDIT将源程序输入,其扩展名为.ASM。

汇编上机实验报告

汇编上机实验报告

汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。

实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。

程序运行正常,输出结果与预期一致。

实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。

程序运行正常,输出结果与预期一致。

实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。

程序运行正常,输出结果与预期一致。

实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。

汇编语言上机实验二2015李中

汇编语言上机实验二2015李中
实验报告
课程:汇编语言程序设计
专业班级:计算机科学与技术
学号:
姓 名:李中
实验二 汇编命令(伪指令)实验
一、实验目的
1、掌握数据定义伪指令的使用方法;
2、掌握符号定义伪指令的使用方法;
3、掌握段定义伪指令的使用方法;
4、掌握各种数据在内存中的存放形式。
二、实验要求
1、学会使用数据定义伪指令定义字节数据、字数据、双字数据、四字数据及十字数据;
程序段如下:
DSEG SEGMENT
B1 DW 1234H,5678H,8000H,'XY'
B2 DW 256*16,46H,-25
B3 DW ?,OFFSET B1
B4 DW 3 DUP (1234H)
DSEG ENDS
END
步骤:编、链接下列程序段。然后在debug中,用D命令观察DD定义的数据在内存中的存放格式。
程序段如下:
DSEG SEGMENT
C1 DD 12345678H,'MN'
C2 DD 80000000H,-1
C3 DD 36.625,-36.625
C4 DD 3 DUP (1234H)
DSEG ENDS
END
步骤:
编辑:
汇编:
链接:
测试:
四、遇到的问题
1.用edit进行程序编辑时,文件名没有加上后缀.ASM,汇编和链接后,用debug中的D命令查看数据的存储形式时,发现全是乱码现象。
2.用debug进行测试时,修改程序,必须重新汇编、链接,且将原来生成的文件删除。
2、学会使用DEBUG中的D命令观察字节数据、字数据、双字数据等在内训中的格式;
3、学会使用DEBUG中的E命令修改内存中存放的数据;

实验二-汇编语言程序的上机步骤

实验二-汇编语言程序的上机步骤

实验二汇编语言程序的上机步骤一、实验目的熟练掌握汇编语言程序的上机步骤和程序调试方法。

二、实验内容及步骤1.通过CMD命令进入DOS方式。

2.通过CD命令和MD命令建立和进入用户程序目录。

3.将实验一笑脸程序补充为一个完整的汇编语言程序。

4.熟读第五部分内容:环境简介5.通过编辑——汇编——连接步骤生成.EXE形式的笑脸程序Smile.exe。

6.运行Smile.exe程序,观察运行结果。

7.用“DUBUG Smile.exe”命令将Smile.exe程序装入内存,通过R命令读取Smile.exe程序在内存的地址。

8.用反汇编U命令观察笑脸程序。

9.重复实验一“使用DEBUG调试程序”中的步骤(4)和(5),观察程序运行结果。

10.验证题以下程序段用以显示信息“Press any key when you ready.”。

在用户按下任一键后,另起一行显示信息“Input your password:”。

DSEG SEGMENT use16MESS1 DB ‘Press any key when you ready’,0AH,0DH,‘$’MESS2 DB ‘Input your password:’,’$’DSEG ENDSSSEG SEGMENT STACKDB 80H DUP(0)SSEG ENDSCSEG SEGMENTASSUME DS:DSEG,SS:SSEG,CS:CSEGSTART:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21H ;显示“press any key when you ready.”MOV AH,08HINT 21H ;等待用户按任一键MOV DX,OFFSET MESS2MOV AH,09HINT 21H ;显示“Input your password:”MOV AH,4CHINT 21HCSEG ENDSEND START三、实验要求认真完成实验每一步骤,详细记录实验过程、现象和结果,及时整理实验报告。

实验2— 汇编语言上机过程

实验2— 汇编语言上机过程

实验2 汇编语言上机过程一、实验目的掌握汇编语言上机过程,熟练使用EDIT,MASM,LINK,DEBUG命令。

二、实验内容在显示器上显示一段字符串。

三、实验步骤1、进入DOS ,输入D:回车2、输入D:\>CD MASM5输入D:\MASM5>EDIT 123.ASM此时进入EDIT全屏编辑窗口。

输入源程序,并且存盘。

ALT键可以激活菜单,打开FILE下拉菜单中的SA VE或SA VE AS保存编辑好的文件,然后退出。

此时,源程序建立完毕。

3、用MASM产生OBJ文件输入MASM 123.ASM 回车第一个是OBJ文件,回车确定,即建立目标文件。

第二个是LIST列表文件,它同时列出源程序和机器码程序清单,并给出符号表,如需要可输入123.LST,不需要直接回车。

第三个CRF文件用来产生交叉引用表,一般程序不需要建立此文件,直接回车。

注:警告错误和严重错误必须都为0,编译才算通过,如不为0,则记住错误行号,返回EDIT 修改程序,然后再编译。

4、用LINK程序产生EXE文件输入LINK 123.OBJ 回车LINK有两个输入文件OBJ(目标文件)和LIB(库文件),无特殊需要,对LIB直接回车。

LINK的输出文件,一个是EXE文件,另一个是MAP文件,它是连接文件的列表文件,称为连接映象,它给出每个段存储器的分配情况。

如没有严重错误,将产生EXE文件,如有错误重新执行步骤2、3、45、程序执行输入123.EXE 回车查看屏幕显示,是否和预期结果一致。

四、程序清单DA TA SEGMENTBUFF DB 'How are you!','$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV AH,9HMOV DX,OFFSET BUFFINT 21HMOV AX,4C00HINT 21HCODE ENDSEND START。

山东大学DSP实验报告

山东大学DSP实验报告
五、实验结果和提示 1. 建立项目,并加入文件 运行 C5402 Device simulator,选择 Project→New 菜单项,建立一个新的项目 example1.pjt, 并 选 择 Project→add files to new project 菜 单 项 , 加 入 文 件 example1.asm, vectors.asm,example1.cmd
.mmregs
;使能存储器映像寄存器
stack
.usect
"STACK",10h
.def _c_int00
;------------------------------------------------------------------------------
.text
_c_int00:
stm # stack+10h, SP
1. 在 TMS320C5402 软件仿真模型上,建立 example1.cmd 命令文件,配置 COFF 段结 构,分配存储空间。
2. 运行一段程序,分别将与 CPU 运算相关的控制位 SXM、OVM、C16、FRCT 置 1 或 清 0,分析程序的执行结果。观察与 CPU 运算相关的标志位 TC、C 的变化情况。 三、要求 1. 本实验要求在 PC 机的集成开发环境 Code Composer Studio(简称 CCS)及 TMS320C5402 软件仿真模型上进行。 2. 实验程序:example1.asm, vectors.asm,example1.cmd 3. 实验前要作好充分准备,包括读懂实验程序,分析程序中的原始数据、中间结果和最终结 果,了解调试步骤及调试方法等。写出实验预习报告。 4. 通过实验验证自己的分析正确否,总结实验中遇到的问题,根据实验报告的要求,认真撰 写实验报告。 四、实验步骤 1. 建议在逻辑盘 D:\下,建立以自己学 号命名的子目录,(如:D:\DXK03\学号) 以后自己的实验程序都在此目录下运 行 。 并 将 文 件 example1.asm, vectors.asm,example1.cmd 拷贝该文件 夹内。(说明:实验室的机器 C 盘都已保 护,ti 目录在 C 盘,所以学生的目录及文 件不能建在 c:\ti\myprojects 下)。

2010汇编语言上机实验二

2010汇编语言上机实验二

;多字节BCD码乘2子程序 MULTI PROC LEA DI,BCDBUF+5 ;从低位开始 MOV CL,5 CLC MUL1: MOV AL,[DI] ;取BCD码 ADC AL,AL ;乘2 AAA ;十进制数运算校正 MOV [DI],AL ;存BCD码 DEC DI DEC CL JNE MUL1 RET MULTI ENDP COSEG ENDS END HEXBCD
汇编语言上机实验(二) 4学时
国家级计算机实验示范中心
实验二 数制、码制和子程序的编程与调试
一.实验目的: 实验目的: 1. 熟练掌握编写汇编语言原程序的基本方法和基本框架。 2. 熟练使用DEBUG调试程序。 3. 掌握十六进制数与ASCII码之间,ASCII码与BCD码之间的转换。 4. 掌握用DOS功能调用,实现字符的输入和显示。 5. 掌握子程序的编程与调试方法。 二.实验内容: 实验内容: 1、从键盘输入两个2位十进制正数转换成二进制数后,对这两个数进行相加相乘 运算,结果以十六进制数形式显示在屏幕上。 2、从键盘输入两个2位十进制正数转换成组合BCD码后,对这两个数进行相加 相乘运算,结果以十进制形式显示在屏幕上。 3、从键盘输入一个4位十进制正数并回显后,将其对应的十六进制数显示在屏幕 上。
实验要求一参考程序:
TITLE CONVERT HEXADECIMAL TO BCD DATA SEGMENT PROMPT DB "INPUT HEXADECIMAL(4DIGITS):$' HEXBUF DB 5,0,5 DUP(0) DISP DB 0AH,0DH BCDBUF DB 6 DUP(0),'$' DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 HEXBCD: MOV AX,DATA MOV DS,AX

实验2-汇编语言上机环境及基本操作

实验2-汇编语言上机环境及基本操作

实验二汇编语言上机环境及基本操作一、实验目的及要求1.掌握汇编语言源程序的书写格式和要求2.掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

3.学会使用记事本、MASM、LINK、DEBUG等软件工具。

4.掌握将数据和代码都放在代码段的程序设计方法。

5.掌握将数据和代码放不同段的程序设计方法。

6.掌握用LOOP指令构建循环程序二、实验内容1.练习:计算机上建立、汇编、连接、调试及运行程序的方法编写程序,计算2^121)在D盘建立一文件夹,命名(例如101),将MASM.EXE和LINK.EXE复制到此文件夹;在此文件夹中新建文本文件,文件名改为汇编源程序名,例如:2e12.asm 用记事本打开2e12.asm,输入源程序并保存。

源程序:assume cs:codecode segmentmov ax,2mov cx,11s: add ax,axloop smov ax,4c00hint 21hcode endsend2)汇编源程序点开始菜单,点运行,输入CMD按回车,进入命令提示符窗口;输入D:并回车,打开D盘,再输入CD 101并回车,进入101文件夹;输入MASM 2e12并回车,一路按回车,进行汇编汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。

其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。

这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。

汇编通过后,会生成目标文件2e12.obj 3)连接目标程序、输入LINK 2e12并回车,一路按回车连接成功后,会生成可执行文件2e12.exe4)跟踪并调试可执行程序输入DEBUG 2e12.exe并按回车,进入DEBUG调试程序单步运行程序,跟踪程序,每执行一条指令,检查相关寄存器或存储器的数据,看看程序是否按我们的意愿运行,若有出入,修改源程序,重新汇编、连接、运行调试,直到成功编写程序计算100×300,用循环结构实现完成否?2.将数据和代码都放在代码段的程序设计方法程序功能:将8个字数据累加求和,存入AX便于大家检查验证,将8个字设为1,2,3,4,5,6,7,8assume cs:codesgcodesg segmentdw 1,2,3,4,5,6,7,8start: mov bx,0mov ax,0mov cx,8s: add ax,cs:[bx]add bx,2loop smov ax,4c00hint 21hcodesg endsend start调试程序,结果是否正确?若将程序中的标号start去掉,结果如何?add ax,cs:[bx]语句中段前缀为什么用CS,能去掉吗?能改为DS吗?3.将数据和代码都放在不同的段,实现题2的功能assume cs:codesg,ds:datasgdatasg segmentarray dw 1,2,3,4,5,6,7,8datasg endscodesg segmentstart:mov ax,datasgmov ds,axmov bx,offset arraymov ax,0mov cx,8s: add ax,ds:[bx]add bx,2loop smov ax,4c00hint 21hcodesg endsend start调试程序,结果如何?比较3和2的源程序,多段程序设计与单一段程序设计4.对题3的程序稍做修改,求出8个数中的最小数和最大数分别存入MIN和MAX 单元(若能力有限,只求其中之一)提示:用比较指令(P62)结合条件转移指令(P89),产生不同的程序分支要求简要描述解题思路,源程序要加上必要的注释。

实验二 汇编语言程序上机过程

实验二  汇编语言程序上机过程

实验二汇编语言程序上机过程实验目的:熟悉8086/88汇编语言编程格式及上机设计调试过程。

如图5-1所示。

实验器材:计算机一台,DOS或WINDOWS环境,、MASM.EXE、LINK.EXE、DEBUG.EXE 等程序文件。

实验内容及步骤:1、编辑录入源程序建议EDIT后的文件名不要省略,源程序扩展名必须为ASM,不能省略。

EDIT界面如图6-1所示,激活菜单用鼠标单击或ALT+菜单名的第一个字母。

最常用的文件下拉中Save(保存)、Exit(退出,若未存盘会提示是否存盘)两个命令,如果未存盘选择Exit则会弹出如图6-2所示的对话框询问是保存退出(Yes)、不保存退出(No)、取消返回继续编辑(Cancel)。

例如:执行如下命令图6-1 EDIT的基本界面图6-2 EDIT的Exit命令对话框2、汇编汇编命令格式如下:建议源程序基本名不要省略。

例如:;扩展名“.ASM”可省略若没有错误显示如下:Microsoft (R) Macro Assembler Version 5.10Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.Object filename [aa.OBJ]: ;目标文件名Source listing [NUL.LST]: ;源程序列表文件,加行号便于查错Cross-reference [NUL.CRF]: ;交叉参考文件,名字信息49576 + 420869 Bytes symbol space free0 Warning Errors ;警告错误0 Severe Errors ;严重错误,若有此类错误,不能生成目标OBJ文件有关错误信息的含义请参看教材附录C。

如果省略源程序名则第一个提示信息为:Source filename [.ASM]: ;源程序文件名3、连接连接命令格式如下:建议目标程序基本名不要省略。

汇编语言上机实验报告

汇编语言上机实验报告

汇编语言上机实验报告实验时间:XXXX年XX月XX日实验课程:XXXXX实验室地点:XXXXX一、实验目的:1.熟悉汇编语言的基本语法和指令格式;2.掌握汇编语言程序的编写和调试方法;3.理解汇编语言与计算机硬件之间的关系。

二、实验设备与环境:1.实验设备:个人计算机或计算机终端;2. 实验环境:汇编语言开发工具,如Masm、TASM等。

三、实验内容:本实验通过编写汇编语言程序,实现以下功能:1.输入两个整数,求出其和并输出;2.输入一个正整数,判断其是否为素数并输出结果;3.输入一段字符串,判断其中是否存在一些字符,并输出字符的位置。

四、实验原理与方法:1.汇编语言基本语法:包括数据定义、指令格式、寄存器、标志位等;2.输入输出操作:通过中断调用实现从键盘输入、向屏幕输出;3.常用指令:包括数据传送指令、算术运算指令、逻辑运算指令等;4.判断与分支:通过条件判断指令实现程序流程控制。

五、实验步骤:1. 打开汇编语言开发工具,新建文件,并保存为.asm文件;2.编写程序,包括数据定义、指令编写等;3.进行程序调试,检查程序的正确性和运行结果;4.运行程序,查看程序的输出结果;5.对程序进行优化,确保程序的效率和稳定性;6.编写实验报告,记录实验过程和结论。

六、实验结果与数据分析:1.第一个功能的结果:输入两个整数进行相加并输出;2.第二个功能的结果:输入一个正整数,判断是否为素数并输出结果;3.第三个功能的结果:输入一段字符串,判断是否存在一些字符,并输出字符的位置。

七、实验总结:通过本次实验,我对汇编语言的基本语法和指令格式有了更深入的了解,掌握了汇编语言程序的编写和调试方法,加深对汇编语言与计算机硬件之间关系的理解。

在实验过程中,我遇到了一些困难和问题,但通过不断学习和尝试,最终解决了这些问题。

通过实验,我对汇编语言的应用有了更深入的认识,并体会到了编程的乐趣和挑战。

实验完成后,我深刻感受到了汇编语言的底层性能和灵活性,同时也意识到了其编码复杂和调试困难的一面。

汇编语言上机报告

汇编语言上机报告

汇编语言上机报告班级:姓名:学号:成绩:实验1:8086的微处理器结构(现场)的认识实验一、实验目的1、通过DEBUG工具了解8086的寄存器2、了解DEBUG工具二、预习要点1、8086微处理器的内部特性。

2、8086的寄存器类型、名称和作用。

3、debug工具的作用和特点三、实验项目在DOS下利用Debug调试工具的R命令查看8086微处理器的现场(数据结构)四、实验设备环境PC机1台,DOS操作系统,Debug调试工具五、实验方法在DOS下利用Debug调试工具的R命令查看8086微处理器的现场(数据结构)。

六、实验要求1、写出R命令的功能。

2、写出8086的当前现场的所有数据部件(寄存器)的名称及作用。

1. 进入DOS 指定上机目录的方法2.建立第一次上机的源程序Z=X+Y (2=1+1)3.对源程序进行编译(汇编)产生目标(二进制)文件的方法。

源程序正确(无致命错误 0 Severest Errors )时会出现编译正确的信息并产生同名1.obj 目标文件。

4.制造错误并存盘后重新汇编(MASM 1; 为快速汇编命令,不能缺少“;”。

即不用会话直接)看产生错误的信息。

修改错误重新存盘汇编。

5. 对1.obj链接(link.exe)产生可执行1.exe文件6.完成1.exe后的文件夹7.用DEBUG调入要调试的1.exe文件,用U命令查看。

8.DEBUG的U命令的功能本程序的机器语言(二进制)程序的形态。

用十六进制表示。

每条指令的首地址,如13E7:0000(指令地址由系统分配)每条指令的机器代码,如B8E613每条指令的助记符(汇编指令),如MOV AX,13E6系统分配的本程序数据段的段地址13E69. DEBUG的R命令的功能自己完成截图,并小结指出R命令的所有功能实验2:8086传送类指令的学习实验一、实验目的1、了解8086指令的特点。

2、验证传送类所有指令类型的功能。

3、通用传送指令和专用传送指令的对比。

汇编语言上机试验指导

汇编语言上机试验指导

作实验2【1】.有空加作实验【4】(1).实验2算术及位串处理程序【1】.在数据段预先存放16个十六进制数的ASCII码,把BX中的四位十六进制数,从左到右用查表的方法找到对应数位的ASCII码,并取出显示出来。

要求见书:参考程序:data segmentasc db30h,31h,32h,33h,34h,35h,36h,37h,38h,39hdb41h,42h,43h,44h,45h,46hdata endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cl,4rol bx,clmov si,bxand si,0fhmov dl,[asc+si]mov ah,2int21hrol bx,clmov si,bxand si,0fhmov dl,[asc+si]mov ah,2int21hmov ah,4chint21hcode endsend start【2】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。

要求:(1)字符串的比较程序中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。

并指出不相等的位置。

参考书上例3.51,题目改为MESS2定义为从键盘输入缓冲区,键盘输入缓冲区定义:mess2DB9,?,9DUP(?)例3.51在数据段中有一个长度为19的字符串MESS1,在附加段中有一个长度为19的字符串MESS2,比较它们是否相等。

若相等显示‘Y’,否则显示‘N’。

编制程序如下所示。

data segmentmess1db‘computer software$’data endsext segmentmess2db‘comkuter software$’ext endscode segmentassume cs:code,ds:data,es:extstart:mov ax,datamov ds,axmov ax,extmov es,axlea si,mess1lea di,mess2mov cx,19cldrepe cmpsbjz yes;如果zf=1跳转到标号yesmov dl,‘n’jmp disp;跳转到标号dispyes:mov dl,‘y’disp:mov ah,2int21hmov ah,4chint21hcode endsend start实验3分支程序设计实验目的:掌握分支与循环程序等基本编程方法。

汇编语言程序设计上机实验指导

汇编语言程序设计上机实验指导

汇编语言程序设计上机实验指导一、实验目的1.掌握汇编语言的基本原理和编程技巧。

2.加深对计算机系统结构的理解。

3.培养实验操作和编程能力。

二、实验环境1.所需软件:MARS仿真器。

2.操作系统:任意支持MARS仿真器的操作系统。

三、实验内容1.实验一:编写一个简单的汇编语言程序,实现加法运算。

(1)要求用户输入两个整数。

(2)将两个数相加。

(3)输出两个数的和。

2.实验二:编写一个汇编语言程序,实现乘法运算。

(1)要求用户输入两个整数。

(2)将两个数相乘。

(3)输出两个数的乘积。

3.实验三:编写一个汇编语言程序,实现判断一些数是否为质数。

(1)要求用户输入一个整数。

(2)判断该整数是否为质数。

(3)输出判断结果。

4.实验四:编写一个汇编语言程序,实现打印从1到N之间的所有质数。

(1)要求用户输入一个整数N。

(2)打印出从1到N之间的所有质数。

四、实验步骤1.打开MARS仿真器,创建一个新的程序。

2.按照实验要求,编写汇编语言程序代码。

3.在MARS仿真器中调试和运行程序。

4.检查程序输出结果是否与预期相符。

5.优化程序代码,提高程序的效率和性能。

五、实验注意事项1.确保编写的代码逻辑正确、语法规范。

2.程序设计要遵循模块化设计原则,尽量将程序划分为多个模块,提高程序代码的可读性和维护性。

3. 实验过程中要注意调试程序,排除可能出现的bug。

4.在程序编写过程中,保持良好的编程习惯,合理命名变量和子程序,提高代码的可读性。

六、实验总结1.实验报告中需包含实验的目的、内容、步骤、注意事项等内容。

2.分析并总结实验中遇到的问题和解决方法。

3.对实验过程、结果的合理性进行分析和讨论。

4.提出对实验中存在问题的改进建议。

以上就是一份汇编语言程序设计上机实验指导的内容。

希望这份指导能够帮助学生们更好地进行汇编语言程序设计的实验,提高他们的实践能力和编程水平。

汇编上机实验报告

汇编上机实验报告

汇编上机实验报告实验名称:汇编上机实验报告1. 实验目的通过完成汇编上机实验,掌握汇编语言的基本概念和语法规则,理解计算机底层运行的原理,加深对计算机体系结构的理解。

2. 实验环境硬件环境:个人电脑一台,操作系统为Windows 10软件环境:MASM汇编语言开发工具(Microsoft Macro Assembler)、DOSBox模拟器3. 实验内容及步骤3.1 实验一:汇编程序基本框架搭建步骤:(1) 在MASM环境下创建一个新的汇编源文件,命名为"lab1.asm"。

(2) 在源文件中编写汇编程序的基本框架,包括段定义、数据定义和代码段等。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,观察程序输出结果。

3.2 实验二:实现简单的数值运算步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab2.asm"。

(2) 在源文件中编写汇编程序,实现两个数的相加、相减、相乘和相除等简单的数值运算。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,输入两个数值,观察程序计算结果。

3.3 实验三:字符串处理步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab3.asm"。

(2) 在源文件中编写汇编程序,实现字符串的输入、输出和处理。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,输入一个字符串,观察程序对字符串的处理结果。

4. 实验结果与分析实验一:汇编程序基本框架搭建在DOSBox模拟器中成功执行了汇编程序,没有出现任何错误提示,并得到了预期的输出结果。

汇编语言上机实验报告

汇编语言上机实验报告

汇编语言上机实验报告汇编语言上机实验报告引言:汇编语言是一种底层的计算机语言,通过使用汇编语言,我们可以更加深入地了解计算机的运行原理和底层机制。

本次实验旨在通过上机实践,掌握汇编语言的基本语法和编程技巧,同时加深对计算机底层的理解。

实验目的:1. 学习汇编语言的基本语法和指令集;2. 掌握汇编语言的程序设计和调试方法;3. 加深对计算机底层原理的理解。

实验环境:本次实验使用的是Windows操作系统,并安装了MASM汇编语言开发工具。

实验过程:1. 实验一:Hello World程序我们首先编写一个简单的Hello World程序,用于验证汇编语言的环境是否正常。

通过使用MASM工具,我们可以将源代码汇编成可执行文件,并在命令行中运行。

该程序的功能是在屏幕上输出"Hello World"。

```assembly.model small.stack 100h.datamsg db 'Hello World$'.codemain procmov ah, 09hlea dx, msgint 21hmov ah, 4chint 21hmain endpend main```通过编译、链接和运行,我们可以在屏幕上看到"Hello World"的输出。

2. 实验二:计算两个数的和在这个实验中,我们将学习如何编写一个简单的加法程序。

我们定义两个变量a和b,并将其值相加,然后将结果输出到屏幕上。

```assembly.model small.stack 100h.dataa db 10b db 20sum db ?.codemain procmov al, aadd al, bmov sum, almov ah, 09hmov dl, sumadd dl, 30hint 21hmov ah, 4chint 21hmain endpend main```在屏幕上,我们可以看到输出结果为"30",即10加20的和。

汇编语言上机实验

汇编语言上机实验

实验一 DOS常用命令及8088指令使用 二、实验内容
DEBUG 命令使用 :
1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 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,347FH 7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。在操作时要注意提示信息,并按提示操
实验二 内存操作数及寻址方法
二、实验内容和步骤
求累加和程序: 程序: MOV BX,1000 MOV CX,10 SUB AX,AX LOP: ADD AL,[BX] AD CAH,0 INC BX J: LOOP LOP INT 3 步骤: 1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址 值代替。 2)用命令N AA将此程序命名为文件AA(文件名可任取)。 3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开 始地址) 4)用命令W 100将此程序存到AA命名的磁盘文件中。 5)用命令Q退出DEBUG。 6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。 若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。 7)用E命令在内存地址1000H处键入16个数字 8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查 AX,BX的值是否符合你的预计值。 9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样, 若不一样,检查程序是否有错。 10)重复G J与T,再检查AX是否正确。 11)用G命令使程序运行到结束,检查AX值是否正确。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序的基本结构练习
一:循环程序设计
一、实验目的
(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 SEGMENT
BUF DW 23,123,-12,-210,45,0,90,-453
BUF1 DW 8 DUP(0)
BUF2 DW 8 DUP(0)
A DW
B DW DA TA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DA TA
START: MOV AX, DATA
MOV DS, AX
LEA BX, BUF
LEA SI, BUF1
LEA DI, BUF2
MOV A,0
MOV B,0
MOV CX,8
L0: MOV AX,[BX]
CMP AX,0
JGE L1
MOV [DI],AX
ADD DI,2
INC B
JMP NEXT
L1: MOV [SI],AX
ADD SI,2
INC A
NEXT: ADD BX,2
LOOP L0
MOV AH, 4CH
INT 21H
CODE ENDS
END START
2)运行程序。

3)检查结果无错误后将结果记录下来。

2.设STR字符串是以0结尾。

试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。

1)输入源程序:
DA TA SEGMENT
STR DB 'HOW arE YoU!',0
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET STR
AGAIN:MOV DL,[SI]
OR DL,DL
JZ OK
CMP DL,'A'
JB NEXT
CMP DL,'Z'
JA NEXT
ADD DL,20H
MOV [SI],DL
NEXT: MOV AH,2
INT 21H
INC SI
JMP AGAIN
OK: MOV AH,4CH
INT 21H
CODE ENDS
END START
2)运行程序。

3)检查结果无错误后将结果记录下来。

3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。

1)输入源程序:
DA TA SEGMENT
COUNT DW ?
TOTAL DW ?
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA
START: MOV AX,DATA
MOV DS,AX
MOV CX,0
MOV AX,0
MOV BX,0
LOOP1: INC BX
ADD AX,BX
INC CX
CMP AX,5050
JLE LOOP1
MOV COUNT,CX
MOV TOTAL,AX
CODE ENDS
END START
2)运行程序。

3)检查结果无错误后将结果记录下来。

五、实验结果
1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。

同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

程序运行结果如下界面所示:
设STR字符串是以0结尾。

试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。

程序运行结果如下界面所示:
3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。

程序运行结果如下界面所示:。

相关文档
最新文档