8086汇编语言程序设计实验指导书
汇编语言程序设计实验指导书

汇编语言实验报告题目:子程序设计班级:rbw111姓名:吴德鹏学号:201107092416完成日期:2013.12.22概述:《汇编语言程序设计》实验指导书是非计算机、非电类的其他专业:包括纺织、机械、热能等专业的《汇编语言程序设计》课程配套使用的实验指导。
在理论课的教学中着重介绍微机系统的组成及工作原理,针对INTEL 8088/8086系列介绍相应的指令系统和汇编语言程序设计,介绍了接口的一般概念和CPU与外设交换信息的常用方式的软硬件设计思想。
实验课测重培养学生的汇编语言设计能力及一些简单接口程序设计的方法,训练学生汇编语言程序调试的能力。
通过实验,使学生加深对课堂教学内容的理解,培养学生综合使用微型机的初步能力。
其中实验一、实验二是后续实验的基础,通过该实验,学生应能了解汇编语言源程序的一般格式,熟悉汇编语言程序的上机过程和调试程序的基本方法,重点放在DEBUG调试程序的命令使用方法上。
也可以将实验一、实验二合并为一个实验,按照*实验一的要求进行;实验三、四、五进一步培养学生的各种结构的程序设计能力;实验六主要是简单接口的综合应用,为学生建立一个微机应用系统的概念,使学生通过具体的实例对相关的接口有感性认识,提高学生的实际动手能力和独立解决问题的能力。
教师可以根据专业学时的多少和学生的具体情况来开设实验。
一、实验目的:1.进一步熟悉分支、循环程序设计的方法及用DEBUG调式程序的方法。
2.熟练掌握子程序的参数传递的方式、子程序的嵌套、递归调用及其设计方法和技巧。
3、培养学生创新精神和独立运用所学基本知识和技能分析问题和解决问题的能力。
二、实验属性:显示学生名次表:编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字的grade数组中,其中grade+i保存学号为i+1的学生的成绩。
然后根据grade中的学生成绩,把学生名次填入50字的rank数组中,其中rank+i的内容是学号为i+1学生的名次。
《汇编语言程序设计》实验指导手册解析

《汇编语言程序设计》实验指导手册《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节。
本指导手册依照我系各类计算机专科专业教学大纲,根据人民邮电出版社的《汇编语言程序设计》(梁发寅著)教材编写而成。
本指导手册共计有编有10个实验,在实际实验过程中可以按照实际教学进度情况加以增删。
每个实验都应做到:1.做好上机实验的准备工作:应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。
2.编写源程序:按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。
3.完成实验报告:做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。
实验报告的内容为:实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。
实验一汇编语言上机环境(一)实验目的1熟悉汇编语言上机环境;2掌握汇编语言上机过程与步骤。
(二)实验器材与实验准备实验器材:硬件:微机一台软件:DOS或WIN98/2000/XPMASM . EXE和LINK . EXE实验准备:cs1 segmentassume cs : cs1 , ds : cs1start: push cspop dsmov ah,0int 10hlea dx , str0mov ah,9int 21hmov ah,4chint 21hstr0 db 'hello' , '$'cs1 endsend start(三)实验内容和要求1.建立汇编源程序文件2.逐步汇编,连接生成可执行文件3.运行生成的可执行文件(四)实验步骤:1.在记事本中创建和编辑源文件2. 将MASM . EXE和LINK . EXE以及源文件拷贝在同一目录下3. 汇编源文件4. 连接目标文件5. 执行可执行文件(五) 实验结果分析在生成可执行文件过程中,一共生成了多少个相关的文件,它们的作用分别是什么?实验二 DEBUG 的使用(一)实验目的1、熟悉 DEBUG 程序中的命令,学会在 DEBUG 下调试运行汇编语言源程序。
《汇编 语言》实验 指导书

孝感学院计算机科学系本科《汇编语言程序设计》实验指导书目录实验一:汇编环境与DEBUG调试 (2)实验二:8086汇编语言分支程序设计 (8)实验三:8086汇编语言循环程序设计 (10)实验四:8086汇编语言子程序程序设计 (13)实验五:8086汇编语言中断与磁盘程序设计 (17)相关说明:《汇编语言程序设计》实验的主要目的是掌握汇编程序调试的方法与一般的程序设计能力,为今后的硬件应用打下基础。
因此本实验指导书重在强调实验调试的环节,有关程序设计的具体方法及相关算法请参见教材。
此文件中用黑体字加粗的内容一般为重要信息或实验的步骤与要求,未使用黑体加粗或有下划线的内容是提示信息或问题的答案。
实验一:汇编环境与DEBUG调试目的与要求熟悉汇编环境与汇编源程序的调试,重点掌握汇编的过程与常用DEBUG命令的用法实验内容一、熟悉汇编的编程环境1.汇编语言源程序的建立:可以使用任何文本编辑器建立汇编源程序文件,如:TC、EDIT等。
但建立的文件扩展名建议为.asm,下面的源程序功能用于在屏幕上输出字符串“hello,world!”,我们通过此源程序的运行过程了解汇编的编程环境。
DATA SEGMENTBUF DB“hello,world!$”DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AX,9INT21HMOV AH,4CHINT21HCODE ENDSEND START在DOS提示符下键入以下编辑器命令,如:C:\MASM>EDIT或TC然后在编辑器的窗口中通过键盘输入以上源程序。
并保存为文件abc.asm.后返回到DOS提示符下。
2.将源程序文件汇编成目标程序文件:汇编功能可以使用Microsoft的MASM进行,微软的汇编程序有多个版本,但使用方法大致相同,本实验将使用MASM 5.0进行汇编。
微机原理8086实验指导书

实验一循环程序、分支程序与运算程序的设计一. 实验内容1.在ABC地址处有20个字节数据,今要求传送到CBA地址处,并在屏幕上显示目的串的内容。
试用两种方法实现。
(字节串传送,字节传送循环)2.以BLOCK1和BLOCK2开头的2个字符串,其长度均为LEN,试编程实现:(1)将BLOCK1开头的字符串送到BLOCK2开始的内存空间。
(2)将BLOCK1开始的内存空间全部清零。
3.试编一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则屏幕显示“MATCH”,若不相同则屏幕显示“NO MATCH”4.在ABC和BCD两地址起,各有两个字节的无符号数,试编程实现这两个无符号数的加法以及减法运算,并将结果分别存放到CBA和DCB开始的存储单元中去。
二. 实验目的:1.使学生掌握MASM汇编环境下程序的编辑、编译、连接、调试过程及方法。
2.掌握程序框图的设计方法;3.掌握分支程序的设计方法;4.掌握循环程序的设计方法;三. 实验说明1.实验之前,一定写好预习报告(包括画出程序框图;写出程序),否则不准做实验;2.调试程序程序,改正语法错误和其他错误。
四. 实验报告要求:1.画出程序框图;2.写出预习过程中所写的两个程序;3.写出调试之后的程序和两个程序;实验二主程序与子程序的设计一. 实验内容1.试用子程序结构编写一程序:从键盘输入一个2位十进制的月份数(01~12),然后显示出相应的英文缩写名。
提示:根据题目要求实现的功能,可编写用一个主程序MAIN分别调用几个子程序。
(1)INPUT从键盘接收一个2位数,并把它转换为对应的二进制数。
(2)LOCATE 把输入的月份数与其英文缩写名(如JAN,FEB,MAR,APP,MAY,JUN等)对应起来,制成一个字符表以便查找。
DISPLAY 将找到的缩写字母在屏幕上显示出来,显示可用DOS所提供的显示功能(INT 21H的09号功能)。
8086实验指导书

频率 300KHz 8088
AEDK88ET
与PC机连
ADC0809
8279
VCC GND
8259 蜂呜器 8位开关
8251 8253 62256
39
I/O译码电路
40
第四章 硬件接口实验
41
1
实验一
一、实验要求
双色灯实验
编写程序,以8255为输出口,控制四个双色灯按红、绿、黄的要求发光。
二、实验目的
35
8. 实验仪必须如下显示才算加载成功
只有显示8688 2.1 才算加载成功
36
9.如何知道程序是不是处在执行状态,可观察如下几个位 置:
与
交替闪烁
与
交替闪烁
37
10.如何中止程序的执行
1.中止执行程 序按HALT
2 .恢复初始 状态按RST
38
电位器 译码器地址 8位LED 电源开关
交通灯 DAC0832 8255
26
主程序 调用inword 调用sort BUFF→SI [SI]→AL 调用display SI+1
Display子程序 AL/10→AL,AH AL+30H→AL AH+30H→AH AH→DH AH=2 调用 INT21H显示 显示空格 CX-1 CX=0? 结束
27
A
DH → AL
AH=2调用 INT21H显示 RET
23
实验二 从键盘输入并换
一. 实验要求 从键盘输入5个有符号2位十进制数,将它转换成有符号二进制数, 将结果送入内存中buff开始的单元中。 二. 实验目的 掌握键盘接受数据的方法,码制转换。 三. 实验程序框图 算法: ①符号字符串→标识符MINU。若为负, MINU=1; ②数字字符(31H~39H)→一位十进制数(0~9)a0,a1,a2… ③十进制数转换成十六进制数: 十六进制数=a2x100+a1x10+a0 =(a2x10+a1) x10+a0 ④ 转换后查符号,如果是负数,取补 码制转换部分流程图: 24
8086汇编语言程序设计 微机实验报告

微机实验报告第一部分:8086汇编语言程序设计一、实验目的通过上机练习,初步掌握8086的指令系统,熟悉8086汇编语言程序的编写格式,学会编写简单的汇编语言应用程序,初步学会使用DEBUG调试工具。
二、实验题目(一)编程实现从字符串中查找特定的字符,记录特定字符的个数,并将结果在屏幕上显示,同时退出并返回DOS。
(要求字符串从键盘上输入)1、流程图2、实验程序及注释DATA SEGMENTBUFSIZE DB 20 ;数据段ACTCHAR DB ? ;定义字符串CHARTEXT DB 20 DUP(?) ;给输入字符分配内存DB '$'CNT DB 0 ;给计数器分配内存STRING1 DB 'PLEASE INPUT THE STRING:','$'STRING2 DB 0AH,0DH,'INPUT THE WORD YOU WANT TO CHECK:','$' STRING3 DB 0AH,0DH,'THE NUMBER OF THE WORD IS:','$'DATA ENDS ;数据段结束COSEG SEGMENT ;代码段ASSUME CS:COSEG,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRING1 ;显示提示语:请输入字符串MOV AH,09H ;输出字符串STRING1INT 21HMOV DX,OFFSET BUFSIZE ;从键盘输入字符串存入BUFSIZEMOV AH,0AH ;并送显INT 21HMOV DX,OFFSET STRING2 ;显示提示语:想查询的字符是MOV AH,09H ;输出字符串STRING2INT 21HMOV AH,01H ;从键盘上输入字符到AL中并送显INT 21HMOV BX,OFFSET CHARTEXT ;将字符串首地址存入BXMOV CL,ACTCHAR ;置循环次数CX=字符串长度XOR CH,CHLP1: CMP AL, [BX] ;字符串从头开始与键入字符AL比较JZ LP2 ;相等则转入LP2INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,继续循环LP1JMP FINI ;若全部比较完毕,跳转FINILP2: INC CNT ;计数器增一INC BX ;指针指向字符串下一个字符DEC CX ;循环次数减一JNZ LP1 ;若还有未比较的字符,跳至LP1 FINI: MOV DX,OFFSET STRING3 ;显示提示语:所查询的字符个数:MOV AH,09HINT 21HMOV AL,CNT ;将计数器的值送ALAAM ;将此值转换成非压缩BCD码ADD AH,30H ;将BCD码转换为ASCⅡ码MOV DL,AH ;高位送显MOV AH,02HINT 21HMOV AL,CNT ;再将计数器的值送ALAAMADD AL,30H ;将BCD码转换为ASCⅡ码MOV DL,AL ;低位送显MOV AH,02HINT 21HMOV AH,4CH ;结束INT 21HCOSEG ENDS ;代码段结束END START ;程序结束3、运行结果PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): A↙THE NUMBER OF THE WORD IS(数量为):3↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符):9↙THE NUMBER OF THE WORD IS(数量为):0↙PLEASE INPUT THE STRING(先输入字符串):ASDFAAD↙INPUT THE WORD YOU WANT TO CHECK(输入待查找字符): S↙THE NUMBER OF THE WORD IS(数量为):1↙4、程序改进○1循环次数的改进原来的程序:MOV CX,19改进原因:此程序表明无论输入的字符串多长,即使没有达到限定的最大字符串的长度,也要循环19次。
《汇编语言程序设计》实验指导书
前言《汇编语言程序设》在计算机科学中是一门综合性的专业基础课,是计算机专业的核心课程。
它不仅是一般程序设计的基础,而且也是设计和实现编译程序、操作系统及其它系统程序和大型应用程序的重要基础。
它为后续专业课程的学习打下了理论基础和实践基础。
由于汇编语言程序设中有大量的指令,因此汇编语言程序设实验课在教学中占有重要的地位。
通过实验可以使学生更好的巩固和掌握所学的内容,进一步增强动手能力和解决实际问题的能力。
为了提高实验的效率,任课教师提前一周布置实验任务,并且进行一定的分析和讲解,要求学生进行准备工作。
准备工作包括查找资料,设计算法,写出预习报告,其中预习报告包括题目的解题思想,概要设计,实现算法的源代码清单等。
每次实验前,学生应向实验指导教师上交实验预习报告,预习报告经指导教师认可后方能进行实验。
实验完毕写出实验报告,用A4纸打印成册(源程序存盘),由学习委员统一收齐交指导教师审阅评定。
实验成绩考核:实验成绩占《数据结构》总评成绩的20%,其中实验效果占10分,出勤率和实验报告各占5分。
有以下情形之一者,实验成绩为不及格:1.迟到,早退,无故缺勤总共3次及以上者;2.未按时完成实验达4次及以上者;3.缺交实验报告3次及以上者。
实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
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,即二者的补码和与差。
8086 汇编语言子程序程序设计
汇编语言程序设计实验报告学院:计算机科学与技术专业:计算机科学与技术班级:计科131MOV AX,4C00HINT 21HMAIN ENDPPROADD PROC NEARPUSH AXPUSH CXPUSH SIPUSH DIMOV SI,[BX]MOV DI,[BX+2]MOV CX,[DI]MOV DI,[BX+4]XOR AX,AXNEXT:ADD AX,[SI]ADD SI,2LOOP NEXTMOV [DI],AXPOP DIPOP SIPOP CXPOP AXRETPROADD ENDPARY DW 1,2,3,4,5,6,7,8,9,10COUNT DW 10SUM DW ?TABLE DW 3 DUP(?)CODE ENDSEND MAIN使用相应的文本编辑器建立文件LAB5.asm,内容如上所示。
二. 生成可执行文件:1.汇编:C:\masm> masm lab5;2.连接:C:\masm> link lab5;三. 请写出此程序中的变量ary,count,sum 的EA,并判断此程序的功能:四. 用debug 调试此程序时,第一条指令的段内EA 是多少?此程序数据段内偏移地址为0 的字单元数据为多少?其对应的机器指令是什么?-L ;加载程序文件lab5.exe-R ;查看IP 与CS 寄存器的内容-D DS:0 ;查看当前数据段内偏移地址为0 的字单元数据-U ;查看机器指令实验二:编写一个子程序,实现在屏幕的指定位置,用指定颜色,显示一个用0 结尾的字符串源程序如下data segmentstr db 'display string',0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dh,8mov dl,21mov cl,3mov si,offset strcall show_strmov ax,4c00hint 21h;----------------------------show_str proc nearpush axpush cxpush dxpush espush simov es:[bx], cljcxz okmov es:[bx+1], dlinc siadd bx, 2jmp short sok:pop sipop espop dxpop cxpop bxpop axret; 子程序:divdw; 要求:进行不会除法溢出的除法运算,被除数为dword,除数为word,结果为dword ; 参数:(ax) = 被除数dword型的低16位; (dx) = 被除数dword型的高16位; (cx) = 除数; 返回:(dx) = 结果的高16位; (ax) = 结果的低16位; (cx) = 余数divdw:mov bx, ax ; 缓存ax——被除数的低16位mov ax, dx ; ax = H,被除数的高16位mov dx, 0div cx ; ax 为商,dx为余数 = rem(H/N) * 65536push ax ; 结果的商,也就是最后要放在dx中的mov ax, bx ; dx为 rem(H/N) * 65536, 为高16位,ax为低16位,再进行一次除法运算div cx ; ax 为商——最后结果的低16位,dx为余数——为最后结果,应赋给cxmov cx, dxpop dxretcode endsend start实验结果实验一:变量ary,count,sum 的EA分别是00140,00154,00156此程序的功能是数列求和实验二:实验三:实验总结这次实验,感觉难度最大的就是做2个子程序的设计,在网上向好友请教了N回!还犯了一些低级的错误,如将16位的寄存器的内容传送到字符型数字串里去,这很明显是不对的,在逆序时寄存器的高16位会直接把正常的数字字符冲掉,还有就是将当我直接将字型单元的内容传送字型单元时,编译器会报错,不过提示是它后面的指令错误。
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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言上机实验指导书
一、概述
上机实验总学时为16学时,其中综合性实验为2学时。
实验共有6项暂定为8次,每次2学时。
1.实验辅导的主要内容
实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备;实验步骤;实验报告要求;实验程序及参考框图。
开始的实验介绍较细,后面的实验简要介绍。
2.实验的软硬件要求
关于汇编语言程序设计的硬件要求不高,有IBM-PC/XT即可,但应有彩色显示器以便进行图形实验。
软件方面应有MASM.EXE5.0版(包括LINK.EXE),与MS-DOS版本配套的DEBUG程序和EDIT.EXE编辑软件(其它编辑软件也可以)。
3.加强实践能力的培养
实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。
其中包括:
实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等;
开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。
对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或自己编制程序加以实现。
实验一汇编语言运行环境及方法、简单程序设计(2学时、验证性)
1.实验目的:
(1) 熟悉汇编语言运行环境和方法
(2)了解如何使用汇编语言编制程序
(3) 熟悉DEBUG有关命令的使用方法
(4) 利用DEBUG掌握有关指令的功能
(5) 利用DEBUG运行简单的程序段
2.实验内容
(1)学会输入、编辑汇编语言程序
(2)学会对汇编语言程序进行汇编、连接和运行
(3)进入和退出DEBUG程序
(4)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。
对于U命令、N命令、W命令等,也应试一下。
3.实验准备
(1)仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。
(2)准备好源程序清单、设计好调试步骤、测试方法、对运行结果的分析。
(3) 编写一个程序:比较2个字符串所含的字符是否相同。
若相同则显示’Match.’,否则显示’No match!’;(1)仔细阅读有关DEBUG 命令的内容,对有关命令,都要事先准备好使用的例子。
4.实验步骤
(1)在DOS提示符下,进入MASM目录。
(2)在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。
①调用edit输入、编辑源程序并保存在指定的目录中;例:edit abc.asm
②用汇编程序masm对源程序汇编产生目标文件obj。
例:masm abc
不断修改错误,直至汇编通过为止。
③用连接程序link产生执行文件exe.例:link abc
④执行程序
可直接从DOS执行程序,即在DOS环境中,输入文件名即可。
(3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。
5.实验报告要求
(1)源程序清单。
(2) 如何启动和退出EDIT程序。
(3) 如何对源程序进行汇编及编辑。
(4)如何启动和退出DEBUG程序。
(5)整理每个DEBUG命令使用的方法,实际示例及执行结果。
(6)启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?
实验二循环程序、分支程序程序设计实验(4学时、验证性)
1.实验目的:
(1)掌握循环、分支程序的设计方法
(2)进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。
(3)学会针对不同的问题,选用不同的组织循环的方法。
2.实验内容
(1)编写一个程序S21,将内存中一组有符号的字数组按递增的序列排序,并将其中的二进制数以十六进制的形式显示在屏幕上。
(2)编写一个程序S22,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。
3.实验准备
(1)编写实验内容要求的两个程序。
(2)写出调试以上程序,即修改程序参数,检查结果的操作方法。
(3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。
4.实验步骤
(1)用EDIT或其它编辑软件,编写.ASM源程序,例如S21.ASM及S22.ASM。
(2)对其进行汇编及连接,产生.EXE文件。
(3)对.EXE文件进行调试运行。
a.用DEBUG调试运行,学会修改AL内容的方法。
b.对DSPKEY.EXE键入不同的字符,分别进行调试。
c.在MS-DOS下运行这两个.EXE文件。
5.实验报告要求
(1)画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。
(2)说明本实验是如何利用DEBUG进行调试的。
实验三子程序设计(4学时、验证性)
实验3.1、本实验的目的在于让同学们掌握同一模块调用的方法。
1.实验目的
(1)掌握主程序与子程序之间的调用关系及调用方法。
(2)掌握子程序调用过程中近程调用与远程调用的区别。
(3)掌握通过堆栈转送参数的方法。
2.实验内容
(1)编写程序S31,将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。
要求码型转换通过子程序HEXASC实现,在转换过程中,通过子程序DISP实现显示.
(2)编写一个主程序S32,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。
3.实验说明
(1)第一个实验程序用子程序的近程调用实现。
由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。
实验过程中可以从堆栈的内容看到两个子程序的返回地址值。
由于是近调用,地址值只包括返回地址的段内偏移量。
在每个子程序的执行中,检查CS值是不变的。
(2)第二个程序是利用远调用的方法调用子程序的。
在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。
子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。
(3)第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。
一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。
有关该方法的原理此处不再介绍。
4.实验准备
(1)预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。