汇编语言程序设计实验安排
汇编语言程序设计(三循环)
掌握汇编语言开发环境,熟练掌握循环程序结构及编程方法,掌握冒泡排序算法。
2.实验内容:
⑴采用冒泡排序方法对给定的数据进行排序,使之成为升序数列,调试,检查结果; ⑵使用交换标志,优化冒
3.实验用设备仪器及材料:
link.exe连接2.obj文件,生成可执行文件2.exe.
⑶用DEBUG调用2.exe文件,格式为DEBUG 2.EXE ⑷用D命令观察内存单元值
⑸用U命令观察源程序
⑹用G命令运行程序 ⑺用T命令单步执行程序 ⑻用R命令观察或修改寄存器内的值
5.实验报告: ① 同学要对本次实验课的内容加以总结,并写出自己对本次 实验的体会和收获。 ② 实验报告格式: 实验名称 实验材料 实验步骤 实验总结
硬件:计算机 软件:DEBUG调试软件。
4.实验要求:
⑴要求编写一个把十个数,依次从小到大升序排列的循环程序。 ⑵写出使用Debug命令调入程序段运行,并查看程序运行过程及标志位值的变化。 ⑶总结汇编源程序从编写到执行的过程。写出用DEBUG调试并运行可执行文件的过程, 查看验证执行结果。
5.实验步骤: ⑴用文件编辑器编写汇编语言程序(如:记事本),并以asm为后缀命名, 如:2.asm ⑵运行masm编译器进入dos,调入所编写的汇编程序,生成2.obj,然后用
结果呐
问题:
本程序选出的最大值是哪一个? 仔细观察数据在存储单元内的存储情况。 观察各寄存器内数据的变化。 指出运算结果存放的地址及数值。
实验参考程序:
data segment buf dw 3,-4,6,7,9,2,-8,-10,20,0 data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov cx,10 dec cx lop1:mov dx,cx mov bx,0 lop2:mov ax,buf[bx] cmp ax,buf[bx+2] jge lop3 xchg ax ,buf[bx+2] mov buf[bx],ax lop3:add bx,2 dec cx jne lop2 mov cx ,dx loop lop1 mov ah,4ch int 21h code ends end start
汇编语言程序设计实验要求
汇编语言程序设计实验要求一、实验目的1.理解计算机的基本组成结构和运行原理;2.掌握汇编语言的基本语法和应用;3.学会使用汇编语言设计并实现简单的程序;4.培养分析和解决问题的能力。
二、实验内容根据实验的具体要求,设计并实现汇编语言程序,要求程序的功能和执行效果符合实验要求。
三、实验要求1.完成实验报告,并按照实验报告模板的要求编写。
2.实验过程中能提出并解答问题的,要及时记录下来。
3.实验过程中发现的问题要及时上报和解决。
4.保持实验室设备的安全性和完好性。
四、实验步骤1.紧密结合课程内容,理清实验的基本思路和需求。
2.设计程序的框架和算法,明确每个步骤的功能和实现方法。
3.编写汇编语言程序的代码,注意代码的规范性和可读性。
4.进行程序的编译和调试,确保程序能够正确运行并得到正确的结果。
5.运行程序,观察程序的执行过程和结果是否符合设计要求。
五、实验评分标准1.实验报告的撰写质量(包括格式、内容、语言表达等)占总分的30%。
2.汇编语言程序的设计和实现质量占总分的50%。
3.程序的运行效果和正确性占总分的20%。
六、实验注意事项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。
汇编语言程序设计课程教学大纲
汇编语言程序设计汇编语言程序设计课程旨在培养学生的编程能力、逻辑思维和解决实际问题的能力。
本课程通过学习汇编语言的基本语法规则和编程技巧,让学生能够理解计算机硬件和软件之间的交互关系。
为了达到这个目标,我们制定了以下教学计划和目标:一、课题1. 汇编语言程序设计2. 课程目标:掌握汇编语言程序设计的基本原理和方法,熟练使用汇编语言编写程序,解决实际问题。
3. 教学时长:共28课时,每周2课时,共4周完成全部课程内容。
二、课前准备1. 教学用具:黑板、投影仪、电脑、汇编语言程序设计教材等。
2. 教学内容:汇编语言程序设计的基本概念、语法规则、编程技巧等。
3. 案例和实践:从实际问题出发,设计案例,引导学生进行实践操作。
三、教学目标1. 了解汇编语言程序设计的基本概念。
2. 掌握汇编语言的语法规则和编程技巧。
3. 能够使用汇编语言编写简单的程序,解决实际问题。
四、教学重点1. 汇编语言程序设计的语法规则。
2. 汇编语言的实际应用。
五、教学难点1. 汇编语言的实际应用。
2. 对于汇编语言程序设计中的复杂问题,如何找到合适的解决方法。
六、课前导入1. 通过介绍汇编语言的背景和重要性,激发学生的学习兴趣。
2. 引导学生对汇编语言程序设计产生浓厚兴趣,激发学生的学习热情。
七、授课环节1. 介绍汇编语言程序设计的基本概念和语法规则。
2. 通过案例分析,让学生掌握汇编语言的编程技巧和实际应用。
3. 组织学生进行编程实践,通过完成一些简单的编程任务,让学生能够熟练使用汇编语言,提高学生的编程能力。
八、作业布置1. 要求学生针对一些实际问题,利用所学的汇编语言编程知识,编写简单的程序来解决。
2. 要求学生复习课堂所学内容,加强对汇编语言程序设计知识的理解和掌握。
九、课后小结1. 总结本次课程的主要内容,强调学生对汇编语言程序设计的应用能力。
2. 鼓励学生深入学习和实践,提出问题和探究更深层次的应用。
汇编语言程序设计实验指导
汇编语言程序设计实验指导【实验提要】以下列举的10个实验,都是以Intel的8086及后续系列微处理器的指令系统为核心,采用宏汇编工具MASM6. X以及调试工具DEBUG或DEBUG32,针对本教材所述内容进行相关的上机实践。
旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。
(带*号的为选作内容)实验一调试工具DEBUG的应用实验目的通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG的功能;2、DEBUG命令: A,D,E,F,H,R,T,U的使用;3、BCD码、ASCII码及用十六进制数表示二进制码的方法;4、寄存器: AX,BX,CX,DX,FLAGS,IP。
内容及步骤注:本次实验可以参照教材上关于DEBUG的叙述内容进行。
一、DEBUG 命令使用1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境,显示提示符 '- '。
2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。
注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。
3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。
4、用命令 F230 23F 12 重复上二项实验,观察结果并比较。
5、用命令 E200 41 42 43 44 45将A-E的ASCII码写入地址为200开始的内存单元中,再用D命令观察结果,看键入的十六进制数和ASCII码的对应关系。
6、用H命令检查下列各组十六进制数的和与差(补码表示):(1)56H,34H (2)23H,45H (3)AB,3045H注:输入 H 12 34 则在下一行显示0046 FFDE,即二者的补码和与差。
《汇编语言程序设计》实验指导书
实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
2.硬件法利用专用代码转换集成电路进行转换。
如74LS74可把BCD码转换为七段代码。
这种方法需要硬件费用,但速度快。
本实验要求掌握软件编码转换技术。
计算机常用的代码有二进制、八进制、十六进制、BCD码、ASCⅡ码、七段码等,它们之间的相互关系如下表所示。
本次试验的内容是ASCⅡ码转换为未组合BCD码设从键盘输入十进制数的ASCⅡ码已存放在起始地址CS :150H的单元中,把它转换成未组合BCD码后,再分别存入起始地址为CS:15AH的单元中。
若输入的不是十进制数的ASCⅡ码,则相应存放结果单元的内容为“FF”。
提示:1.组合BCD码是一位十进制数字占一个字节,高半字节为0,低半字节为该十进制数字的BCD码。
ASCⅡ码转换为未组合BCD码只需减30H。
2.程序框图如下图所示。
3.程序执行前,需要在CS:150H内存缓冲区写入待转换的ASCⅡ码。
方法如下:方法一:用A命令-ACS:150 DB 35,39,30,41,32CS:155 ∧C方法二:用E 命令-ECS:150,35,39,30,41,32方法三:用F命令-FCS:150 L5 35,39,30,41,321.执行程序后检查执行结果可用D命令:-DCS:15ACS:15A 05,09,00,FF,02ASCⅡ码转换为未组合BCD码的程序流程图参考程序如下:ORG 100HMOV CX,0005HMOV DI,150HBB:MOV BL,0FFHMOV A,[DI]CMP AL,3AHJNB DONESUB AL,30HJB DONEMOV BL,ALDONE:MOV AL,BLMOV [DI+0AH],ALINC DILOOP BBINT 20HORG 150HDB 35H,39H,30H,41H,32H实验二顺序结构的程序设计一.实验目的1.掌握计算机常用代码的软件转换技术。
汇编语言实验报告_6
青岛理工大学课程实验报告
课程名称汇编语言程序设计班级实验日期
2013.11.3
姓名学号实验成绩
实验
名称
子程序
实验目的及要求1.掌握子程序设计相关指令和伪指令的使用方法
2.掌握子程序设计方法, 特别是参数传递方法
3.掌握主程序和子程序之间的调用关系和调用方法
4.熟悉循环和子程序结合应用解答问题的思路
实验环境1.命令行方式
2.MASM.EXE LINK.EXE DEBUG.EXE
实验内容1.设DATA1开始的内存单元中, 存放着一串带符号字数据, 要求采用冒泡排序算法(Bubble Sort)按照从小到大的顺序排序并将排好序的数据存在DATA1开始的单元。
然后在显示器输出排好序的数据, 中间用’,’隔开。
2.输出数据使用子程序方式。
算法描述及实验步骤步骤:
(1)设置数据段地址
(2)设置堆栈段地址
(3)设置堆栈指针
(4)调用9号功能, 输出一个提示性字符串。
(5)循环进入子程序, 输出原始数据。
(6)在子程序内循环输出每一位的十进制数字。
(7)主程序进行内外循环, 进行冒泡排序。
(8)再一次调用子程序输出排序后的结果。
调试过程及实验结果调试过程:
(2)(1)在输出时, 调用DOS 9号功能, 并不是只要语句MOV AH,09H
(3)它是存在入口条件的, 入口条件:DS:DX=输出字符缓冲区首地址。
所以前面必须加上MOV DX,OFFSET NOTE1。
(4)汇编语言是不会再输出汉字的。
(5)子程序结束时一定要有RET
(6)冒泡排序也遇到一些困难。
调试结果:。
汇编语言程序设计实验报告二
汇编语言程序设计实验报告(二)一、实验目的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五、实验心得这是第二次做汇编实验,首先,心理上已经没有了第一次做实验的那种茫然,知道了想要编写一个完整的程序,应当先将这一个大问题分解成若干个小的问题,找出每一个小问题所对应的解决方法,然后用代码一步一步实现,再将这一个一个的小问题串联起来,找到它们的契合点,用联系把它们组成一个完整的程序,其中最常用的就是转移指令和循环。
汇编语言程序设计实验篇
汇编语言程序设计实验篇在计算机科学领域中,汇编语言是一种低级编程语言,它直接操作计算机硬件资源,具有高效性和灵活性。
本篇文章将介绍汇编语言程序设计实验的相关内容,包括实验目的、实验环境、实验步骤和实验总结。
实验目的汇编语言程序设计实验的主要目的是使学生掌握使用汇编语言编写程序的基本技能。
通过实践操作,学生将理论知识应用于实际情境中,深化对汇编语言的理解,并培养一定的编程能力。
实验环境在进行汇编语言程序设计实验之前,学生需要准备适当的实验环境。
以下是必备的硬件和软件资源:1. 计算机:一台能够运行汇编语言的计算机。
2. 汇编语言编辑器:如MASM、NASM等,用于编辑和编译汇编语言程序。
3. 调试器:如调试版本的DOSBox、CodeView等,用于调试程序,定位和解决错误。
实验步骤在进行汇编语言程序设计实验时,学生可以按照以下步骤进行操作:1. 确定实验内容:根据实验要求,选择适当的汇编语言程序设计任务,如编写一个计算两个数相加的程序。
2. 编写程序源代码:使用汇编语言编辑器,编写程序的源代码,包括程序的指令、数据段和代码段等。
3. 编译程序:使用编辑器提供的编译指令,将源代码编译成机器码,生成可执行文件。
4. 调试程序:使用调试器,对程序进行调试,定位和解决错误,确保程序能够正常运行。
5. 运行程序:运行已调试通过的程序,验证程序的正确性,并观察程序的执行结果。
6. 优化程序:对程序进行进一步优化,提高程序的执行效率和性能。
7. 总结实验结果:根据实验过程和结果,总结实验经验和教训,思考改进和拓展的可能性。
实验总结通过进行汇编语言程序设计实验,学生可以获得以下收获:1. 熟悉汇编语言:实验使学生更加熟悉汇编语言的语法和指令,增强对计算机底层运行机制的理解。
2. 培养编程能力:实验锻炼学生的编程能力和解决问题的能力,提高他们的逻辑思维和分析能力。
3. 提升实践能力:实验让学生通过实践操作,将理论知识应用于实际情境中,增强实践能力和动手能力。
汇编语言学习知识程序设计实验
汇编语⾔学习知识程序设计实验⽬录⽬录 (1)实验⼀利⽤DEBUG熟悉常⽤指令的使⽤ (2)⼀、实验⽬的 (2)⼆、⽰例 (2)三、实验题 (2)实验⼆汇编程序和连接程序的使⽤ (6)⼀、实验⽬的。
(6)⼆、⽰例。
(6)三、实验题。
(8)实验三顺序结构程序设计 (11)⼀、实验⽬的 (11)⼆、⽰例 (11)三、实验题 (12)四、实验报告 (15)实验四循环结构程序设计 (16)⼀、实验⽬的 (16)⼆、⽰例 (16)三、实验题 (18)实验五分⽀结构程序设计 (21)⼀、实验⽬的 (21)⼆、⽰例 (21)三、实验题 (22)实验六⼦程序设计 (29)⼀、实验⽬的 (29)⼆、实验题 (29)实验⼀利⽤DEBUG熟悉常⽤指令的使⽤⼀、实验⽬的熟悉指令系统,掌握常⽤指令的⽤法;通过实验加深对各种寻址⽅式的理解;能熟练使⽤DEBUG中的命令对指令进⾏反汇编,观察并了解机器代码。
⼆、⽰例请分别⽤⼀条汇编语⾔指令完成如下功能:(过程略)。
1.⽤寄存器BX和SI的基址变址寻址⽅式把存储器的⼀个字节与AL寄存器的内容相加,并把结果送到AL中。
ADD AL,[BX][SI]2.⽤位移量为0520H的直接寻址⽅式把存储器中的⼀个字与3412H相加,并把结果送回该存储单元。
ADD WORF PTR [0520H],3412H三、实验题1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执⾏完后AX寄存器的内容。
要求输⼊指令,相应存储单元的内容要事先设置,单步P执⾏,观察执⾏结果。
(设置存储器的值)①.MOV AX,1200H②.MOV AX,BX③.MOV AX,[1200H]④.MOV AX,[BX]⑤.MOV AX,1100[BX]⑥.MOV AX,[BX][SI]⑦.MOV AX,1100[BX][SI]⑧ .MOV AX,[BP+SI+04]2、上机调试、验证教材习题3.15。
汇编语言程序设计的实验环境及上机步骤
汇编语言程序设计的实验环境及上机步骤一、实验环境汇编语言程序设计的实验环境如下:1.硬件环境微型计算机(Intel x86系列CPU)一台2.软件环境⏹Windows98/2000/XP操作系统⏹任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等)⏹汇编程序(MASM.EXE或TASM.EXE)⏹连接程序(LINK.EXE或TLINK.EXE)⏹调试程序(DEBUG.EXE或TD.EXE)文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用TD.EXE。
二、上机实验步骤注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE)。
1.确定源程序的存放目录建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。
如果没有创建过此目录,请用如下方法创建:通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。
2.建立ASM源程序建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。
下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。
在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“ C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。
图1 文本编辑器EDIT的编辑窗口窗口标题行显示了EDIT程序的完整路径名。
紧接着标题行下面的是菜单行,窗口最下面一行是提示行。
菜单可以用Alt键激活,然后用方向键选择菜单项,也可以直接用Alt-F打开File文件菜单,用Alt-E打开Edit编辑菜单,等等。
汇编语言程序设计实验教程教学设计
汇编语言程序设计实验教程教学设计一、教学目标1.掌握汇编语言的基本指令和编程思想;2.能够使用汇编语言进行简单程序设计;3.能够理解计算机底层运行原理。
二、教学内容1.汇编语言基础知识(常用指令、流程控制、数据传输等);2.简单的程序设计实例(数值计算、字符串处理等);3.实验环境的搭建和使用。
三、教学方法1.讲授型教学结合实例演示;2.学生自学课程材料和实验操作指南;3.实验探究和讨论;4.组织小组项目,鼓励合作学习。
四、教学过程第一周本周教学目标:讲解汇编语言基础知识和常用指令。
时间安排教学内容教学方式第一课时引言:计算机底层工作原理讲授时间安排教学内容教学方式第二课时汇编语言概述讲授第三课时汇编语言基本指令(数据传输)讲授+实例演示第四课时汇编语言基本指令(逻辑运算)讲授+实例演示第二周本周教学目标:讲解汇编语言的流程控制和程序设计实例。
时间安排教学内容教学方式第一课时汇编语言基本指令(流程控制)讲授+实例演示第二课时程序设计实例(数值计算)讲授+实例演示第三课时程序设计实例(字符串处理)讲授+实例演示第四课时总结回顾讲授第三周本周教学目标:实验环境的搭建和使用,以及实验探究和讨论。
时间安排教学内容教学方式第一课时实验环境搭建实验操作指导第二课时实验一:初识汇编语言编程实验操作指导+实验探究第三课时实验二:数值计算的汇编实现实验操作指导+实验探究第四课时实验三:字符串处理的汇编实现实验操作指导+实验探究第四周本周教学目标:自主学习和小组项目。
时间安排教学内容教学方式第一-四课时自主学习和小组项目自主学习+小组研究五、考核方式1.实验报告和代码评分;2.期末考试和综合评价。
六、教学资源1.课程PPT和课程材料;2.实验指导书和实验代码;3.在线学习平台和资料共享平台。
七、教学效果评价在本门课程学习结束后,学生应能够熟练掌握汇编语言的基本知识和编程思想,能够使用汇编语言进行简单程序设计,能够理解计算机底层运行原理。
实验一 汇编语言程序设计EMU8086基础实验
实验一汇编语言程序设计EMU8086基础实验1、实验目的和要求:了解使用EMU8086(8086汇编模拟工具)学习汇编的方法。
2、实验内容:编写汇编程序,计算2010H+2011H,并把和存入RESULT单元。
8086汇编模拟工具,结合了一个先进的原始编辑器、汇编器、反汇编器、具除错功能的软体模拟工具(虚拟 PC),还有一个循序渐进的指导工具。
这对刚开始学汇编语言的人会是一个很有用的工具。
它会在模拟器中一步一步的编译程式码并执行,视觉化的工作环境让它更容易使用。
你可以在程式执行当中检视暂存器、标志以及内存。
模拟器会在虚拟 PC 中执行程式,这可以隔绝你的程式,避免它去存取实际硬体,像硬盘、内存,而在虚拟机器上执行汇编程序,这可以让除错变得更加容易。
3、实验仪器与器材:计算机及EMU8086汇编软件等。
4、实验原理:自己总结5、实验过程与测试数据(含电路图/程序框图):A、打开EMU8086 v4.08软件,新建工程,选EXE模板,清屏,编写8086程序代码。
B、保存程序代码为*.asm文件,编译保存为可执行文件.exe,编译保存没有错误则模拟运行。
如果有错误返回修改。
运行有单步运行、全速运行等。
实验一参考程序DATA SEGMENTX DW 2010HY DW 2011HRESULT DW ?DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,XADD AX,YMOV RESULT,AXRETMAIN ENDPCODE ENDSEND START6、实验分析:自己分析7、实验体会自己总结。
实验五汇编语言程序设计实验(一)
实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。
2、掌握循环程序的设计。
3、掌握汇编语言主程序与子程序的调用和参数传递。
4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。
二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。
要求统计字符串用子程序完成。
data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。
2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。
写出操作步骤,程序清单,程序注释,实验现象。
微机原理-实验一-汇编语言-冒泡排序
微机原理实验报告班级:XXXXX姓名:XXXX学号:20XXXXXXXXX大学信息科学与技术学院信息工程系实验一汇编语言程序设计-(具体题目)一、实验目的(根据实际情况修改):1、熟悉MASM编译环境,了解程序的汇编方法;2、熟悉常用汇编指令,学习汇编程序设计方法;3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式;4、了解冒泡法原理,学习多重循环的编程方法。
二、实验内容:编写程序,用冒泡法实现将数据段内9,8,7,6,5,4,3,2,1按照由小到大的顺序重新排列。
三、程序流程图和程序代码1、流程图2、代码与注释(代码不能和指导书完全一样,写出注释,写出寄存器尤其是DS的值)data segmentbuf1 db 8,7,6,5,4,3,2,1data endscode segmentassume cs:code,ds:datastart: mov ax,data //传送数据段datamov ds,axmov dx,7 //dx放外循环7次L3: mov cx,dx //cx放内循环7次lea si,buf1 //将db里的数据传送到siL2: mov al,[si]cmp al,[si+1] //比较[si]与[si+1]jb L1 //[si]<[si+1],跳转到L1xchg al,[si+1] //[si]>[si+1],两两交换mov [si],alL1: inc si //si减1loop L2 //循环L2dec dx //外循环减1,没减到0则跳转到L3 jnz L3 //入内循环,计数初值mov ah,4chint 21hcode endsend start四、调试过程及遇到的问题1、程序执行截图2、调试用到的命令-U命令:查看数据段地址;-d命令:查看运行前后存储器内容;-g命令:运行程序;-t命令:查看运行前后寄存器和存储器内容。
3、遇到的问题及解决办法问题:运行程序后,数据1在存储器地址末尾没变。
汇编语言编程实验报告
汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
二、实验目的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文件只是个文本文件,计算机无法执行。
汇编语言程序设计实验报告
班级 :
二、实验内容 求 1+2+3+4+5+6+7+8+9 的和,并将和显示在屏幕上; 具体要求: 1. 利用重复宏定义实现 1、2、39 数据的定义; 2. 将单个字符显示定义成宏,利用宏调用来实现和的显示。 3. 利用 PWB 集成环境完成程序的编辑、汇编及连接,并最终生成 COM 可执行文件。
二、实验内容 P131 作业 29。
实验三子Βιβλιοθήκη 序设计实验一、实验目的 1.掌握汇编语言源程序子程序设计方法; 2.会使用 CV 软件工具。
二、实验内容 把实验二作为子程序,编写主程序来对能否构成三角形进行 10 判断。
姓名:
汇编语言程序设计实 验报告
实验四
宏汇编程序设计实验
一、实验目的 1.掌握宏汇编程序编程技术及宏调用的方法; 2. 了解 COM 文件的编程方法及特点; 2.会使用 PWB 及 CV 软件工具。
实验五
混合程序的开发实验
一、实验目的 1.了解混合调用中的参数设置; 2. 掌握混合调用的方法;
姓名:
二、实验内容 P156 第 5 题。
汇编语言程序设计实 验报告
班级 :
姓名:
汇编语言程序设计实 验报告
实验一
单指令功能测试实验
一、实验目的 1.会使用 DEBUG 软件; 2.利用 DEBUG 单步执行功能测试指令的执行。
班级 :
二、实验内容 P129,14 题
实验二
完整的汇编语言程序设计实验
一、实验目的 1.掌握完整的汇编语言源程序的设计方法; 2.掌握汇编语言源程序的执行过程。
实验五
多模块程序设计实验
一、实验目的 1.掌握汇编段的属性的含义; 2. 掌握利用 LINK 将多模块连接起来的方法; 3.掌握利用库文件将多模块连接起来的方法。
(完整版)汇编语言程序设计实验篇(emu8086),推荐文档
按钮,保存相应的程序段。
2. EXE TEMPLATE 程序
本章与 DOS 功能调用和汇编源程序相关的实验都是用 EXE TEMPLATE 程序完成的。
打开 emu8086,在“welcome…”对话框中,单击
按钮,创ቤተ መጻሕፍቲ ባይዱ文件。
我去人也就有人!为UR扼腕入站内信不存在向你偶同意调剖沙
在“choose code template”对话框中,选择“EXE template-advanced executable
3. 实验原理
通用数据传送指令包括:1)通用数据传送指令,如 MOV,PUSH,POP,XCHG,CBW,CWD;2)目标地址传送指令,如 LDS,LES;3)标志传送指令,如 LAHF,SAHF,PUSHF,POPF;4)输入输出指令,如 IN,OUT,LEA
寻址方式包括:1)立即寻址;2)直接寻址;3)寄存器寻址;4)寄存器间接寻值; 5)寄存器相对寻址;6)基址-变址寻址;7)基址—变址—相对寻址;8)隐含寻址
逻辑运算指令包括:AND,OR,NOT,XOR,TEST
4. 实验内容
(1)创建 COM TEMPLATE 程序,输入以下程序段,单步执行并记录标志位的变化情况
(提示:在 emulator 对话框中,单击
按钮察看标志寄存器的值)。程序段及结果表
格如表 1-2。 表 1-2 算术逻辑运算实验结果表格
标志位 CF ZF SF OF PF AF
4. 实验内容
(1)创建 COM TEMPLATE 程序,输入以下程序段,观察程序的执行情况,程序段如下:
MOV BL,08H
;BX=?
MOV CL,BL
;CL=?
MOV AX,03FFH
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《汇编语言程序设计》实验指导目录第1章汇编语言程序调试方法实验一汇编语言运行环境及方法、简单程序设计第2章数码转换程序设计实验一数码转换编程及程序调试实验二二进制到BCD转换实验三二进制到ASCII码转换第3章存储器操作程序设计实验一存储器块清零实验二内存块移动第4章基本程序结构练习实验一循环程序实验实验二分支程序实验第5章数据运算程序设计实验一二进制双精度加法运算实验二十进制数的BCD码减法运算实验三乘法运算第6章I/O程序设计实验一绘制三角形图形程序实验二键盘输入程序第7章汇编语言与C/C++的混合编程实验一、求两个整数的最大值。
实验二、键盘与显示实验三、两种方法实现求两个整数中的最大值实验四、嵌入汇编求字符串长度第8章ARM ADS集成开发环境介绍第9章ADS1.2应用实例实验一、运算程序设计第10章ARM汇编语言程序设计实验一、ARM汇编语言程序实验第11章THUMB汇编语言程序设计实验一、THUMB汇编语言程序实验第1章汇编语言程序调试方法实验一汇编语言运行环境及方法、简单程序设计一、实验目的1.熟悉汇编语言运行环境和方法2.了解如何使用汇编语言编制程序3.熟悉DEBUG有关命令的使用方法4.利用DEBUG掌握有关指令的功能5.利用DEBUG运行简单的程序段二、实验内容1.学会输入、编辑汇编语言程序2.学会对汇编语言程序进行汇编、连接和运行3.进入和退出DEBUG程序4.学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。
对于U命令、N命令、W命令等,也应试一下。
三、实验准备1.仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。
2.准备好源程序清单、设计好调试步骤、测试方法、对运行结果的分析。
3.编写一个程序:比较2个字符串所含的字符是否相同。
若相同则显示‟Match.‟,否则显示‟No match!‟;(1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。
四、实验步骤1.在DOS提示符下,进入MASM目录。
2.在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。
1)调用edit输入、编辑源程序并保存在指定的目录中;例:edit abc.asm2)用汇编程序masm对源程序汇编产生目标文件obj。
例:masm abc不断修改错误,直至汇编通过为止。
3)用连接程序link产生执行文件exe.例:link abc4)执行程序可直接从DOS执行程序,即在DOS环境中,输入文件名即可。
3.详细记录每一步所用的命令,以及查看结果的方法和具体结果。
五、实验方法有关汇编语言程序的上机过程请读者参阅清华大学出版社1991年出版的《IBMPC 汇编语言程序设计》的4.4节。
在这里,我们举例简要说明该过程以及程序的调试方法。
例1.1 比较字符串sample试编写一程序:比较两个字符串string1和string2所含的字符是否相同。
若相同则显示'Match',否则,显示'Nomatch'。
我们可以用串比较指令来完成程序所要求的功能。
上机过程如下:1.调用字处理程序wordstar建立asm文件当然也可以用其它编辑程序如pced或行编辑程序edlin来建立源文件。
C>WS使用非文本文件方式(n命令)建立以sample.asm为文件名的源文件如图1.1所示。
然后用CTRL K X命令将文件存入磁盘,并使系统返回DOS。
;PROGRAM TITLE GOES HERE--Compare string;******************************************************************datarea segment ;define data segmentstringl db 'Move the cursor backward.'string2 db 'Move the cursor backward.';mess1 db 'Match.',13,10,'$'mess2 db 'No match!',13,10,'$'datarea ends;******************************************************************* prognam segment ;define code segment;-------------------------------------------------------------------------------------------------main proc farassume cs:prognam,ds:datarea,es:datareastart: ;starting execution address;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,datarea ;datarea segment addrmov ds,ax ;into DS registermov es,ax ;into ES register;MAIN PART OF PROGRAM GOES HERElea si,stringllea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx,mess1disp:mov ah,09int 21hret ;return to DOSmain endp ;end of main part of program;------------------------------------------------------------------------------------------------prognam ends ;end of code segment;****************************************************************end start ;end assembly图1.1例1的原文件sample.asm2.用汇编程序masm(或asm)对源文件汇编产生目标文件objC:\>masm sample;Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.51520 + 423584 Bytes symbol space free0 Warning Errors0 Severe Errors3.用连接程序link产生执行文件exeC:\>link sample;Microsoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segment4.执行程序C:\>sampleMatch.终端上已显示出程序的运行结果。
为了调试程序的另一部分,可重新进编辑程序修改两个字符串的内容,使它们互不相同。
如修改后的数据区为:;****************************************************************** datarea segment ;define data segmentstringl db 'Move the cursor backward.'string2 db 'Move the cursor backward.';mess1 db 'Match.',13,10,'$'mess2 db 'No match!',13,10,'$'datarea ends;********************************************************************然后,重新汇编、连接、执行,结果为:C>sampleNo mateh!至此,程序已调试完毕,运行结果正确。
另一种调试程序的方法是使用debug程序。
可调用如下:C>debug sample.exe此时,debug已将执行程序装入内存,可直接用g命令运行程序。
-gMatch.Program terminated normally为调试程序的另一部分,可在debug中修改字符串内容。
可先用u命令显示程,以便了解指令地址。
显示结果如图1.2所示。
-u0D36:0000 1E PUSH DS0D36:0001 2BC0 SUB AX,AX0D36:0003 50 PUSH AX0D36:0004 B8310D MOV AX,0D310D36:0007 8ED8 MOV DS,AX0D36:0009 8EC0 MOV ES,AX0D36:000B 8D360000 LEA SI,[0000]0D36:000F 8D3E1900 LEA DI,[0019]0D36:0013 FC CLD0D36:0014 B91900 MOV CX,00190D36:0017 F3 REPZ0D36:0018 A6 CMPSB0D36:0019 7406 JZ 00210D36:001B 8D163B00 LEA DX,[003B]0D36:001F EB04 JMP 0025-u0D36:0021 8D163200 LEA DX,[0032]0D36:0025 B409 MOV AH,090D36:0027 CD21 INT 210D36:0029 CB RETF0D36:002A 8A4608 MOV AL,[BP+08]0D36:002D 98 CBW0D36:002E 50 PUSH AX0D36:002F 8B4604 MOV AX,[BP+04]0D36:0032 03C6 ADD AX,SI0D36:0034 50 PUSH AX0D36:0035 E858FF CALL FF900D36:0038 83C406 ADD SP,+060D36:003B 8BF8 MOV DI,AX0D36:003D 83FFFF CMP DI,-010D36:0040 750C JNZ 004E图1.2例1.1用debug调试时,u命令的显示情况将端点设置在程序的主要部分以前。