《汇编语言上机环境及基本步骤》实验报告

合集下载

微机原理汇编语言上机实验报告

微机原理汇编语言上机实验报告

微机原理汇编语言上机实验报告-CAL-FENGHAI.-(YICAI)-Company One1第三次上机实验报告一.实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。

2.掌握算术运算指令的应用。

3.掌握子程序的设计方法。

4.掌握DOS功能的调用方法。

二.实验仪器586微机一台三.实验内容有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

编程要求及提示:[1] 参加排序的数据及个数由学生自己定义。

[2] 要将排序前的数组和排序后的数组在屏幕上显示出来。

四.给出实验内容对应的源程序及流程N = 50STACK SEGMENT STACK 'STACK'DW 100H DUP()TOP LABEL WORDSTACK ENDSDATA SEGMENTDATABUF DW NDB N DUP()ORIGINAL DB 13,10,13,10,'THE ORIGINAL DATA:$'ORDERED DB 13,10,10,13,'THE ORDERED DATA:$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOP;随机数据MOV CX,DATABUFLEA SI,DATABUF+2MOV BL,12MOV AL,14L:MOV [SI],ALINC SIADD AL,BLLOOP LLEA DX ,ORIGINALMOV AH,9INT 21HCALL DISPAL;下面给数据排序程序MOV CX,DATABUFDEC CXLEA SI,DATABUF+2ADD SI,CX; SI指向数据区末地址L1:PUSH CXPUSH SIL2:MOV AL,[SI]CMP AL,[SI-1]JBE NOXCHGXCHG AL,[SI-1]MOV [SI],ALNOXCHG:DEC SILOOP L2POP SIPOP CXLOOP L1LEA DX,ORDEREDMOV AH,9INT 21HCALL DISPALEXITPROC:MOV AH,4CH;结束程序MOV AH,1INT 21HDISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DATABUF+2MOV CX,NDISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1CALL CHANG ;------------------------------------------------MOV AH,2MOV DL,ALINT 21HMOV AL,[DI]AND AL,0FHCALL CHANG;-------------------------------------------------MOV AH,2MOV DL,ALINT 21HMOV AH,2MOV DL,20HINT 21H ;为了让结果看得清楚,让显示的数用空格空开 INC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCHANG PROC NEARCMP AL,10JNGE CHANG1ADD AL,7CHANG1:ADD AL,30HRETCHANG ENDPCODE ENDSEND START五.实验心得在实验过程中出现了类型不匹配的错误,归根结底还是对知识的掌握熟悉度不够;再者由于初次上机编写一个完整的汇编程序难免会出现这样或那样的问题,但在老师和同学的帮助下最终完成了这个程序的编写运行调试,收获颇丰。

汇编语言上机实验报告(一)

汇编语言上机实验报告(一)

汇编语⾔上机实验报告(⼀)汇编语⾔上机实验报告(⼀)李昌健学号:U201010153专业:应⽤物理学1001班时间:2013年5⽉16⽇地点:南⼀楼实验⼀在⼀个以BUF为⾸址的缓冲区中存放着字符串'How are you'。

请写⼀个程序,将该字符串倒转。

倒转后的字符串放在⼀个新缓冲区中。

使⽤TD观察程序运⾏结束前,是否实现了上述功能。

提⽰:变量可⽤如下伪指令定义BUF DB ‘How are you'N = $ - BUF ; N为字符串的长度NEW_BUF DB N DUP(0)操作提⽰:使⽤TD.EXE调试程序时,应先单步执⾏各个语句,每执⾏⼀条语句,都应观察数据段中的内容以及相应寄存器的变化。

⼆实验要求掌握基本的程序设计框架和⽅法、熟悉常⽤指令的⽤法、熟悉DOS功能调⽤、进⼀步掌握TD的使⽤⽅法。

三寄存器分配和变量定义说明本题利⽤LOOP做循环,逐⼀将BUF中的字节复制到NEW_BUF中。

1 存储单元分配BUF:存放初始串’how are you ’NEW_BUF:存放复制的字符串2寄存器分配BX: BUF 的偏移地址BP:NEW_BUF的偏移地址CX:记录循环次数SI,DI:分别⽤作BUF和NEW_BUF的变址寄存器AX:临时寄存器四流程图五源代码DATA SEGMENTBUF DB 'How are you'N=$-BUFNEW_BUF DB N DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV BP,OFFSET NEW_BUFMOV CX,NMOV SI,CXMOV DI,0DEC SILINE: MOV AL,[BX+DI]MOV DS:[BP+SI],AL INC DIDEC SILOOP LINECODE ENDSEND START六运⾏结果⽤td调试程序,可以看到在数据段⾥NEW_BUF已经存放了倒置的BUF.实验⼆⼀题⽬假设数据段定义如下:DATA SEGMENTSTRING DB ‘The Personal Computer & TV’DATA ENDS试⽤字串操作等指令编程完成⼀下功能:(1)把该字符串传送到附加段中偏移量为GET_CHAR开始的内存单元中。

《汇编语言》实验报告_搭建开发环境

《汇编语言》实验报告_搭建开发环境

《汇编语言》实验报告得分:2、添加添加Irvine32.inc等所在的目录到include files中;3. 将masm32中的ml.exe和ml.err拷贝到VC的Microsoft Visual Studio\VC98\Bin 目录中二、创建与配置project:2.编辑教材85页不带输出的程序代码如下:.386.model flat,stdcall.stack 4096ExitProcess PROTO, dwExitCode:DWORD DumpRegs PROTO.dataRval SDWORD ?Xval SDWORD 26Yval SDWORD 30Zval SDWORD 40.codemain PROCmov ax,1000hinc axdec axmov eax,Xvalneg eaxmov ebx,Zvaladd eax,ebxmov Rval,eaxmov cx,1sub cx,1mov ax,0FFFFhinc axmov cx,0sub cx,1mov ax,7FFFhadd ax,2mov al,0FFhadd al,1mov al,+127add al,1mov al,-128sub al,1call DumpRegsINVOKE ExitProcess,0main ENDPEND main结果:3.输出各寄存器的值。

DumpRegs PROTO程序最后加入调用DumpRegs过程的语句call DumpRegs输出结果如下:4.单步执行的方式调试该程序,查看每步结果,并解释每步结果,并写成注释。

(特别注意对标志位的影响)1、按F10进行调试、alt+F5调出寄存器的变化信息框。

程序及标志位解读如下:.386.model flat,stdcall.stack 4096ExitProcess PROTO, dwExitCode:DWORDDumpRegs PROTO.dataRval SDWORD ?Xval SDWORD 26Yval SDWORD 30Zval SDWORD 40.codemain PROCmov ax,1000h //ax 4096 ;bx 57344;inc ax //ax 4097;bx 57344(实现自增)dec ax////ax 4096;bx 57344(实现自减)mov eax,Xval //把Xval复制给eaxneg eax //ax 26;bx 57344(取反令ax=-26)mov ebx,Zvalv //ax 65510 ;bx 40 ;cx(把Zval的40赋给ebx)add eax,ebx // ax 14 ;bx 40 (求和eax=ebx+eax=14)mov Rval,eax//把eax复制给Rvalmov cx,1 //ax=14;bx=40;cx=1sub cx,1mov ax,0FFFFhinc ax//ax 65535;bx=10;cx=0;mov cx,0sub cx,1mov ax,7FFFhadd ax,2 //ax 32767 bx=40 cx =65535mov al,0FFh//ax 32769add al,1 //ax 33023add al,1 //ax 32768mov al,-128 //ax 32895sub al,1 //ax 32896call DumpRegs //ax 32895INVOKE ExitProcess,0 //结束退出程序main ENDPEND main。

2022年天大计算机科学与技术学院汇编语言上机实验报告

2022年天大计算机科学与技术学院汇编语言上机实验报告
在程序设计时,心中旳想法应和设计旳程序吻合,心中应对程序旳环节清晰无比,以便在程序出错时能及时找到错误,并予以纠正。然后要谨记程序旳格式,对指令旳使用要十分旳清晰。尽量减少病句旳产生。
四、试验成果与结论(经调试对旳旳程序旳运行成果)
试验对公式z=[(x+y)*8-x]/2进行运算,在定义数据段时,已经对x和y赋值,分别为6和7,经计算成果z=49,而试验成果result=0031h,与其符合。试验成功。
程序旳功能是对公式[(x+y)*8-x]/2进行运算,得出成果。首先对程序旳数据段和堆栈段进行定义,数据段里定义3个数据,x,y和result。堆栈段里定义一定长度旳容量,实现程序对现场旳保护和恢复。定义一种代码段,以过程成形式编制旳程序。过程名为proc1,首先对3个段进行寻址。在程序旳开头给一种标号,给一种起始地址,在程序最终结束起始地址来实现对代码段旳装入。程序旳开始,先保留进入程序前旳ds,并将0以16位形式压入堆栈。接着,装入数据段。将x旳数据传送到ax中,运用add指令实现x+y,并运用移位旳形式实现乘8旳操作,用sub运算再扣除x,接着移位实现除2旳操作,最终,用mov指令将ax旳内容传送到result里。
《汇编语言》试验汇报(一)
年级:班级:学号:姓名:
一、试验题目
编制一汇编源程序,求出下列公式中旳Z值,并放在RESULT单元中。
二、试验规定
定义两个单元X,Y和一种单元RESULT,运用数据旳传送和运算指令将公式旳成果计算出来,并将成果Z放在RESULT里.
三、程序设计阐明(用来阐明程序旳功能、构造。包括:程序名、功能、原理及算法阐明、程序及数据构造、重要符号名旳阐明、程序框图等。)
shr ax,1
mov result,axБайду номын сангаас

宏汇编(MASN)及汇编语言上机过程实验报告

宏汇编(MASN)及汇编语言上机过程实验报告

佛山科学技术学院实验报告课程名称汇编语言程序设计实验项目实验一宏汇编(MASN)及汇编语言上机过程专业班级 13 网络工程班姓名学号指导教师杨定安成绩日期2015.10. 25一、实验目的1.通过实验了解和熟悉微机系统的配置。

2.学习在DEBUG状态下输入汇编源程序的方法。

3.初步掌握调试(在DEBUG状态下)的过程。

二、实验原理1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。

用单步跟踪的方法验证指令的功能。

2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。

注:⑴微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;⑵在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP寄存器原来的值。

三、实验仪器微机一台,U盘一块。

四、实验步骤1.开机和关机操作顺序开机:先打开微机外部设备电源开关,如显示器,最后打开主机电源开关。

关机:与开机相反,先关掉主机电源开关,然后关闭所有外设的电源开关。

2. 装入DEBUG程序若计算机系统启动正常,可以进入MASM文件夹或MASM5文件夹从磁盘上调用DEBUG,程序到内存。

如是WINDOWS环境下,先运行CMD命令,然后运行CD MASM命令,再运行DEB2000命令。

一般C盘上装有DEBUG和DEB2000软件,若没有,可以用复制命令从其它盘拷贝过来,然后从装有DEBUG 和DEB2000软件的磁盘上调用DEBUG和DEB2000软件程序。

例如:C :\MASM> DEB2000↙(↙回车符)-(-DEBUG 提示符)当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。

4. 用DEBUG的Register命令检查所有寄存器内容,并作记录,主要是R命令5. 用DEBUG的Assemble命令输入汇编源程序。

汇编语言上机实验报告1

汇编语言上机实验报告1

汇编语言上机实验报告1汇编语言上机实验报告1实验内容:1.编写一个程序,求解给定整数的阶乘并输出结果。

2.编写一个程序,求解斐波那契数列中的第n个数并输出结果。

实验步骤:1.阶乘程序:编写一个汇编程序,通过输入一个整数n,求解n的阶乘。

程序流程如下:1.1.定义变量n,用于保存输入的整数。

1.2.将n与0进行比较,如果n为0,则直接将1输出作为阶乘的结果,并跳转到程序结束;否则继续执行下一步。

1.3.将n的值保存到寄存器中,并将n减1,保存到n中。

1.4.将n与0进行比较,如果n为0,则直接跳转到程序结束;否则继续执行下一步。

1.5.将n的值与寄存器中保存的值相乘,将结果保存到寄存器中。

1.6.将n减1,保存到n中并跳转到第4步。

1.7.输出寄存器中的结果作为阶乘的结果,并跳转到程序结束。

2.斐波那契数列程序:编写一个汇编程序,通过输入一个整数n,求解斐波那契数列中的第n个数。

程序流程如下:2.1.定义变量n,用于保存输入的整数。

2.2.将n与0进行比较,如果n为0,则直接将0作为结果输出,并跳转到程序结束;否则继续执行下一步。

2.3.将n与1进行比较,如果n为1,则直接将1作为结果输出,并跳转到程序结束;否则继续执行下一步。

2.4.将n的值保存到寄存器中,并将n减1,保存到n中。

2.5.将n与0进行比较,如果n为0,则跳转到第9步;否则继续执行下一步。

2.6.将n减1,保存到n中并跳转到第7步。

2.7.将n的值与寄存器中保存的值相加,将结果保存到寄存器中。

2.8.将n减1,保存到n中并跳转到第5步。

2.9.输出寄存器中的结果作为斐波那契数列中第n个数的结果,并跳转到程序结束。

实验结果:1.阶乘程序运行结果:请输入一个整数:55的阶乘为:1202.斐波那契数列程序运行结果:请输入一个整数:6斐波那契数列中第6个数为:8实验总结:通过本次实验,我学习了如何在汇编语言中编写程序解决一些基本的数学问题。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。

2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。

4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。

4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。

4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。

5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。

希望对你有所帮助!。

汇编语言实验报告

汇编语言实验报告

实验一汇编程序的汇编及运行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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言上机环境及基本步骤
一、实验目的:
1.掌握编写汇编源程序的基本格式。

2.熟悉汇编语言上机环境。

3.掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用方法。

4.掌握汇编源程序编译、连接成可执行文件的过程,熟悉MASM,LINK的使用方法。

二、实验内容:
在屏幕上显示并打印字符串“This is a sample program.”
三、实验仪器
微机一台
四、实验步骤:
1.在某盘如E盘,以自己的名字的汉语拼音建立一个工作目录(文件夹,名称不要太
长,不超过8个字符比如zhangsan),将文件MASM.EXE,LINK.EXE等复制到该目录
下,编辑的源文件也保存到该目录下。

从WINDOWS进入DOS环境:C:\>
2.用EDIT编辑SW1.ASM源文件。

(1). 从当前目录进入自己的目录下,
C:\>E: 回车
E:\> CD zhangsan ↙回车
键入EDIT并回车:
E:\ zhangsan>EDIT
根据菜单提示进行各种操作。

(2)进入EDIT编辑------EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保存、另存源程序非常方便。

说明:也可在WIDNDOWS环境下用记事本编辑源文件,在保存时,保存类型应选择所有文件,不能选择文本文件(*.txt),否则在编译时会找不到源文件的。

(3).编辑新文件:
a、在EDIT编辑器中输入汇编源程序。

b、检查输入有无错误。

c、打开文件菜单FILE→选择另存为SA VE AS┅→输入文件名为:SW1.ASM→保
存。

注意:保存到你自己的文件夹中
d、若需要修改此文件,用FILE菜单→选择打开OPEN→输入文件名SW1.ASM,即
可修改。

修改后注意重新再存盘。

(4).编辑汇编源程序
a、在EDIT(或记事本)中输入源程序。

b、检查。

c、存盘。

可保存为SW1.ASM
3.用汇编程序MASM将SW1.ASM文件汇编,生成SW1.OBJ目标文件。

(1).一般简单程序只需生成.OBJ文件,可键入简化命令:
E:\zhangsan>MASM SW1;↙
若有错误,则显示错误行号及错误性质,如:
SW1.ASM(5):error A2006:undefined symbor:xxxx
(2).若有错重新进入EDIT进行修改。

修改后并再存盘,退出编辑,回到DOS,再汇编。

E:\ zhangsan >MASM SW1;↙
(3).没有任何错误时,显示:
Assembling:SW1.asm
表示汇编成功,生成SW1.OBJ文件。

(4).用DIR命令查看应有SW1.OBJ:
E:\ zhangsan >DIR SW1.*
4.用连接程序LINK将SW1.OBJ文件连接,生成SW1.EXE可执行文件。

(1).一般仅生成SW1.EXE文件, 可键入简化命令:
E:\ zhangsan >LINK SW1;↙
若有错误,则显示错误信息,则应返回编辑、修改、存盘,再汇编、连接直到连接成功,生成SW1.EXE可执行文件。

(2).用DIR命令查看应有SW1.EXE:
E:\ zhangsan >DIR SW1.*↙
5.运行SW1.EXE文件
E:\ zhangsan>SW1 ↙
执行SW1.EXE文件,屏幕应显示:“This is a sample program.”。

由连接程序生成的.EXE,在DOS下,直接键入文件名(不要扩展名.EXE)就可以把文件装入内存,并立即执行。

但有的程序没有直接显示结果;对于较复杂程序难免会出现错误,直接观察很难找到错误所在,这样就要借用调试程序进行调试。

实验现象记录:记录调试过程中出现的问题及修改措施,并记录程序执行结果。

五、实验源程序
DA TA SEGMENT
DA1DB 'This is a simple program.'
DB 0DH,0AH,' $'
DA TA ENDS
STACK SEGMENT
ST1 DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACK
START:MOV AX, STACK
MOV SS, AX
MOV AX, DATA
MOV DS, AX
MOV AH, 9
MOV DX, OFFSET DA1
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START。

相关文档
最新文档