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学生的名次。
微机原理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
汇编语言程序设计实验指导
汇编语言程序设计实验指导【实验提要】以下列举的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.掌握计算机常用代码的软件转换技术。
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位会直接把正常的数字字符冲掉,还有就是将当我直接将字型单元的内容传送字型单元时,编译器会报错,不过提示是它后面的指令错误。
80x86汇编语言程序设计实验指导书
80X86汇编语言程序设计实验指导书中南民族大学计算机科学学院2006年9月目录实验一实验的基本要求与方法 (1)实验二顺序程序设计 (13)实验三分支程序设计 (18)实验四循环程序设计 (24)实验五子程序设计 (31)实验六串操作指令的使用 (36)实验七位运算指令的使用 (41)实验八宏汇编技术 (45)附录A MASM 6.X (53)附录B Windbg的使用 (54)附录C I/O宏说明 (57)附录D 汇编指令总汇 (73)附录E 流程图规范 (90)实验一实验的基本要求与方法1.1 实验目的与要求1.1.1 实验目的实验是掌握汇编语言程序设计的步骤,学习使80X86汇编语言程序设计的基本方法和技能,熟练掌握用汇编语言设计、编码、调试和运行程序的方法,养成良好的程序设计习惯,为后续课程和将来相关的项目开发打下坚实的基础。
1.熟练操作宏汇编的开发环境,熟悉汇编语言的编译工具(MASM6.11)及调试器(Windbg)的使用。
2.掌握汇编语言的寻址方式和常用指令。
3.掌握汇编语言基本的程序设计方法和调试手段。
4.掌握子程序和宏指令的设计和调试手段。
1.1.2 实验要求1.上机前应做好充分的准备。
对选定的实验题要先进行设计包括程序框图、数据结构以及算法;上机之前先编好程序代码,并进行认真地静态检查,减少错误的发生,同时还有预先估计程序运行的结果或结果范围,做到心中有数。
2.上机时要遵守实验室的规章制度,爱护实验设备。
要熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在程序的调试过程中,有意识的学习及掌握Windbg程序的各种功能,以便掌握程序的调试方法和技巧。
不互相抄袭,应自己动手按自己的算法编制程序,调试通过。
3.下机后要对实验结果进行整理,分析程序调试过程中所出现的各种情况,对未通过的程序更好认真分析原因,总结经验教训。
4.每个程序完成后应写出实验报告,实验报告的要求如下:(1)本次实验的目的及要求,实验内容。
8086实验指导书-2016(定稿20161009)
PROTEUS-8086实验指导书编者段绪红、李德智、李崇维电气工程专业实验中心2016年9月目录PROTEUS的操作 (1)PROTEUS简介 (1)实验原理 (1)新建工程 (2)编译工程 (4)原理图绘制 (6)仿真调试技巧 (13)8086软件部分实验 (18)实验一系统认识实验 (18)实验二循环程序设计 (20)实验三分支程序设计 (23)实验四数码转换实验 (26)实验五子程序设计 (30)8086硬件部分实验 (33)实验一IO口读写实验(245、373) (33)实验二8255并行I/O扩展实验 (36)实验三可编程定时/计数器8253实验 (39)实验四七段数码管显示实验 (42)附录:DEBUG调试程序的使用及其上机过程 (45)PROTEUS的操作PROTEUS简介PROTEUS是本实验箱进行8086实验的必备软件,是电路设计、电路仿真与调试、程序编译的环境。
PROTEUS教学实验系统(8086/8051)主要由教学实验箱、实验指导书及其配套光盘组成。
通过USB连接线把电脑与实验箱相连接,能完成针对8086的各种交互式仿真实验;通过WWISP下载器,可以对8051芯片进行ISP编程,进行单片机实验课程。
本教学实验箱摒弃以往的设计思想,采用模块化设计,总线器件都可以挂在总线上,只须要接上CS片选就可以实验,减少了实验过程中的接线问题,同时也可极大地提高学生的实验速度。
结合PROTEUS的电路仿真功能,能够大大提高学生实验的动手设计能力。
实验原理大部分实验的开展,我们都采用在PROTEUS平台下的交互式仿真,使用硬件平台与电脑软件仿真同时进行的方法,实验的开展流程如下:在进行硬件实验中,有几点需要注意:1、尽量保持线束的整齐,对于控制线少交叉缠绕。
2、拔线时请逐根拔除,切忌强行硬拔整股连线(易造成整股损坏)。
3、液晶类实验涉及到液晶对比度的调节,请通过邻近电位器来调整。
新建工程首先,打开PROTEUS软件,打开菜单“File->New Project”。
8086 实验指导书
第一部分实验系统简介1.1 QTH软件环境介绍QTH-2008PCI实验仪提供了16位和32位两种微机接口集成实验环境,16位的开发环境“QTH-2008PCI-B”是通过PC机的串行接口与实验仪上的8088/8086H模块相连来实现系统开发的,它实际上是通过RS232接口仿真8088/8086的ISA总线环境的;32位的开发环境“QTH-2008PCI-B”是通过PC机的PCI插槽与实验仪上的PCI9052模块相连来实现系统开发的,它通过PCI插卡和PCI9052桥接芯片为用户提供了一个仿真ISA接口,同时它也提供了PCI总线控制芯片全开放的用户总线接口,使用户可以直接开发32位的应用程序。
“QTH-2008PCI-B”可运行于Windows98/Me/2000/XP操作系统。
但由于从Windows2000/XP操作系统开始,不再提供用汇编语言直接对低层口地址的操作以及BIOS、DOS功能调用的支持。
因此,在Windows2000/XP操作系统下“QTH-2008PCI-B”系统暂不支持BIOS、DOS功能调用,进行一般的汇编语言实验时也必须先打开实验仪电源;而“QTH-2008PCI-B”系统目前只能通过C语言对端口地址进行操作,虽不能用汇编语言直接对端口地址操作,但可进行一般的汇编语言练习,包括部分DOS 功能调用,而且可以运行于没有安装QTH-2008PCI实验仪的PC机。
因此,在进行纯汇编语言练习时,使用“QTH-2008PCI-B”系统;进行接口操作时,则应使用“QTH-2008PCI”系统。
两种系统的使用方法非常接近,掌握一种系统的使用后,另一种系统自然就会使用了。
1.2 QTH软件系统的使用一、安装及进入QTH 系列开发系统QTH 系列开发系统的软件安装非常简单,只要运行随机光盘提供的Setup.exe 应用程序,所有操作均按默认选项进行即可。
安装完成后会在桌面和“开始”菜单生成对应的图标和程序组。
《计算机组成原理-汇编语言程序设计》实验指导书
Move the cursor backward.Move th e cursor forward . Macth...$No ma tch!..$......... .+@P8n..X.@.6... >..l9..s&t...;.k ...2.4.N!K.u.@z"
4
-Q↙ 至此,程序已调试完毕。为了进一步说明 DEBUG 命令的使用方法,我们再次重复上述程序的调试 过程,只是改用 E、A 和 F 命令来修改数据区的内容。必须注意:由于在 DEBUG 状态下只能修改 有关内存单元的内容,因此,重新用 DEBUG 装入程序时,仍是原来未修改的程序。操作如下: DEBUG A01.EXE↙ -G 0B↙ AX=19EE BX=0000 CX=007A DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=19EE ES=19EE SS=19EE CS=19F3 IP=000B NV UP DI PL ZR NA PE NC 19F3:000B 8D36000 LEA SI,[0000] -D 0↙ 19EE:0000 4D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 20 Move the cursor 19EE:0010 62 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 68 backward.Move th 19EE:0020 65 20 63 75 72 73 6F 72-20 62 61 63 6B 77 61 72 e cursor backwar 19EE:0030 64 2E 4D 61 74 63 68 2E-0D 0A 24 4E 6F 20 6D 61 d.Macth...$No ma 19EE:0040 74 63 68 21 0D 0A 24 00-00 00 00 00 00 00 00 00 tch!..$......... 19EE:0050 1E 2B C0 50 B8 EE 19 8E-D8 8E C0 8D 36 00 00 8D .+@P8n..X.@.6... 19EE:0060 3E 19 00 FC B9 19 00 F3-A6 74 06 8D 16 3B 00 EB >..l9..s&t...;.k 19EE:0070 04 8D 16 32 00 B4 09 CD-21 CB FF 75 01 40 5A 22 ...2.4.N!K.u.@z" 用 E 命令将数据区的字符串 backward.修改为 forward. ,操作如下: -E29 'forward.'20↙ 再次用 D 命令查看修改结果: -D 0↙ 19EE:0000 4D 6F 76 65 20 74 68 65-20 63 75 72 73 6F 72 20 19EE:0010 62 61 63 6B 77 61 72 64-2E 4D 6F 76 65 20 74 68 19EE:0020 65 20 63 75 72 73 6F 72-20 66 6F 72 77 61 72 64 19EE:0030 2E 20 4D 61 74 63 68 2E-0D 0A 24 4E 6F 20 6D 61 19EE:0040 74 63 68 21 0D 0A 24 00-00 00 00 00 00 00 00 00 19EE:0050 1E 2B C0 50 B8 EE 19 8E-D8 8E C0 8D 36 00 00 19EE:0060 3E 19 00 FC B9 19 00 F3-A6 74 06 8D 16 3B 00 EB 19EE:0070 04 8D 16 32 00 B4 09 CD-21 CB FF 75 01 40 5A 22 用 G 命令继续运行程序,结果为: -G↙ No match!
8086汇编语言程序设计实验指导书x
8086汇编语言程序设计实验指导书计算机科学与技术学院计算机科学与技术系二〇一一年九月目录第一部分实验方法 ............................................................................. - 1 -1.1 实验目的与要求 ...................................................................... - 1 -1.2 实验方法 .................................................................................. - 2 - 第二部分实验内容 ............................................................................. - 7 - 实验1 简单汇编语言程序设计 .................................................. - 7 - 实验2 分支循环及程序设计 ...................................................... - 8 - 实验3 子程序程序设计 .............................................................. - 9 - 实验4 综合程序设计 ................................................................ - 10 - 附录.................................................................................................. - 11 - 附录1 常用DOS命令 ................................................................ - 11 - 附录2 DEBUG主要命令............................................................. - 13 - 附录3 汇编程序出错信息 .......................................................... - 16 - 附录4 常用字符ASCII码值...................................................... - 20 - 附录5 8088/8086指令系统 ...................................................... - 21 - 附录6 IBM PC/A T中断功能表................................................ - 25 - 附录7 常用DOS功能调用(INT 21H).................................. - 27 - 附录8 BIOS功能调用 ................................................................. - 30 -第一部分实验方法1.1 实验目的与要求一、实验目的学习汇编语言程序设计的基本方法和技能,进一步加深对8086汇编语言程序设计的理解,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,为后继课程——接口技术打下坚实的程序设计基础。
《汇编语言》指导书(5,6,8专业)
《汇编语言程序设计》实验指导书实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。
四.方法说明:a)使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b)用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c)用连接程序link 产生执行文件EXE.d)执行程序,可直接从DOS执行程序。
e)使用debug程序调试程序的方法。
五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db‘move the cursor backward.’string2 db‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datareastart:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件objD:\masm 文件名。
8086-汇编语言分支程序设计
汇编语言程序设计实验报告学院:计算机科学与技术专业:计算机科学与技术班级:计科131MOV AH,2INT 21H ;显示高位ASCII 码MOV DL,BLAND DL,0FHCMP DL,9JBE NEXT2ADD DL,7NEXT2: ADD DL,30HMOV AH,2INT 21H ;显示低位ASCII 码MOV AH,4CHINT 21HCODE ENDS ;返回DOSEND START使用相应的文本编辑器建立文件three.asm,内容如上所示。
2.生成可执行文件:1>.汇编:C:\masm> masm three;2>.连接:C:\masm> link three;3.运行及调试:1>. 运行:C:\masm>debug three.exe-U0 ;通过反汇编查找程序的断点-T=0 2 ;加载数据段-D0 ;查看原始数据是否正确-G=0 XX ;运行程序至断点XX 处-R ;查看程序运行结果以上命令执行的细节可参照实验二中的说明。
4.调试:修改AL 的内容,判断此程序是否能正确显示其中的内容的方法。
例:修改AL 内容为9AH:-L ;重新加载可执行文件-A0 ;重新修改MOV AL,3EH 指令361E:0000 MOV AL,9A361E:0002-G=0 xx;带断点运行-R ;查看程序运行结果实验二:编写一个数据区移动程序,要考虑源数据区与目的数据区有重叠的情况。
1.源程序如下所示,编辑下面的源程序到文件lab.asm 中:使用相应的文本编辑器建立文件lab.asm,内容如上所示。
2.生成可执行文件:1>.汇编:C:\masm> masm lab;2>.连接:C:\masm> link lab;。
汇编语言实验指导书(用)
汇编语言程序设计实验指导书汇编语言程序设计课程建设小组二〇〇五年九月内容简介本书是为了配合《IBM汇编语言程序设计》课程而编写的实验指导书。
配合微型计算机汇编语言程序设计的教学体系及方法,通过上机实验循序渐进地加深对8086/88汇编语言的认识与理解,进而掌握程序设计的一般方法和技巧,并通过对程序的调试和运行,熟悉DEBUG的使用。
本书编排了9个单元实验:3个验证性实验,5个设计性实验,1个综合性实验(选做)。
每个验证性实验包括实验目的,实验环境,实验内容,原理和步骤等,设计性实验给出了基本要求,启发学生的思考和动手的能力。
本书可供各高校计算机专业、非计算机专业开设汇编语言程序设计课程用作实验教材。
前言汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的惟一语言。
因而,对程序的存储空间和运行时间要求较高的一些实际任务,一般都使用汇编语言进行编程处理;至于很多实时性强、需要直接控制硬件的应用场合,则更是非用汇编语言不可了。
汇编语言程序设计是高等院校计算机科学与技术专业“汇编语言程序设计”必修课,实践环节是帮助学生加深认识和理解理论教学知识的重要途径。
学生应该通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而通过循序渐进的程序设计练习,验证各类指令的功能和提高程序设计的能力。
本实验指导书由9个单元实验组成:汇编语言的调试和运行、堆栈指令和算术指令、逻辑指令和串处理指令、汇编语言程序格式、逻辑指令和程序设计、循环程序设计、子程序结构、DOS功能调用和综合实验。
本书所给实验程序全部通过上机验证,各实验之间相互配合而又自成体系,易于为不同类型专业按其实验教学要求选做,所以本书具有较宽的适用面。
目录实验一汇编语言的调试和运行 (1)实验二堆栈指令和算术指令 (2)实验三逻辑指令和串处理指令 (4)实验四汇编语言程序格式 (6)实验五分支程序设计 (5)实验六循环程序设计 (9)实验七子程序结构 (13)实验八 DOS功能调用 (16)实验九综合实验 (20)附录 1 ASCII码表 (22)附录 2 汇编语言常用出错信息 (23)附录 3 DEBUG命令 (27)附录 4 C语言调用汇编语言 (30)实验一汇编语言的调试和运行一、实验目的1、熟悉DEBUG程序和命令,并用它运行基本指令和察看运行结果。
8086汇编语言程序设计实验指导书.
汇编语言上机实验指导书一、概述上机实验总学时为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)仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。
最新汇编语言程序设计实验篇(emu8086)教案资料
1.汇编语言程序设计实验篇1.1.汇编系统软件简介Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。
它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。
该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。
利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。
1.1.1创建程序 TEMPLATE程序本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。
打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。
在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。
在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。
输入全部指令后,单击按钮,保存相应的程序段。
2.EXE TEMPLATE程序本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。
打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。
在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。
在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。
8086-8088微机原理及应用II实验指导书
第一部分软件部分实验实验一汇编语言上机环境的熟悉和命令使用【实验目的及要求】1学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2学会使用MASM在计算机上汇编、连接、调试及运行程序的方法。
3掌握用DEBUG调试汇编程序的方法,为以后实验打下基础。
【实验内容】一、建立软件工作环境为了正常运行汇编程序,需要如下程序:masm.exe 或tasm.exe ;汇编命令link.exe ;链接命令debug.exe ;调试命令二、按照要求完成以下题目1、在屏幕上输出'This is a masm sample!'(1)使用文本文档编辑如下源程序,并保存为sample.asm:;Program is an exampledata segmentastr DB 'This is a masm sample!',0dh,0AH,'$'data endscode segmentassume CS:code,DS:datamain proc farstart:PUSH DS ;保护环境,返回DOSXOR AX, AXPUSH AXMOV AX, data ;数据段的初始化MOV DS, AXLEA DX, astr ;取得字符串的首地址MOV AH, 09h ;9号功能调用INT 21hRETmain endpcode endsend start(2)使用masm汇编命令汇编源程序c:\ >masm sample.asm ---开始汇编Microsoft (R) Macro Assembler V ersion 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. ……--软件提示Object Filename[sample.obj]: --提示输入目标文件名,可省略直接回车Source listing[Nul.lst]: --提示输入列表文件名,可省略直接回车Cross reference[NUL.crf]:Warning errors 0Severe errors 0注意:若汇编的错误提示不为0,则须重新修改sample.asm,然后再汇编,该过程直到错误提示为0为止。
- 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) 如何对源程序进行汇编及编辑。
(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.实验准备(2)熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。
5.实验步骤(1)编辑、汇编两个源程序,生成相应的可执行文件(.EXE)(2)用DEBUG的R 命令,T 命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。
特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。
(3)检查程序执行的结果是否正确。
6.实验报告要求(1)分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。
(2)说明用堆栈传送参数的过程及其具体方法。
(3)分析实验结果及所遇到问题,并说明解决的方法。
实验3.2、本程序的目的在于使读者掌握模块间调用子程序的编写方法.1.实验目的(1) 了解多模块程序设计方法。
(2) 学会使用PUBLEC和EXTRN 伪指令解决模块间的符号(如变量名,标号等)通信问题。
2. 实验内容(1)编写一个子程序,将主程序设定的内存中字符串的小写字母转换成大写字母并显示出来.主程序S33用另一个模块编写。
(2)编写一个子程序,将主程序S34指定的字符所在的地址返回给主程序,字符串(字符串以$为结束标志)与主程序在同一个模块。
3.实验准备(1)仔细阅读教材中有关模块间通信的方法及模块程序设计的方法。
(2)弄清伪指令PUBLIC及EXTRN的功能及用法。
4.实验步骤(1)分别对实验1和实验2的主、子模块进行汇编,在连接时,将它们装配成一个以.EXE为扩展名的可执行文件.观察汇编及连接过程中有无错误.(2)对.EXE 文件进行调试及运行.(3)将实验1中的原字符串改为由键盘输入,然后由子模块将源串中的小写字母转换为大写字母,并将源串与转换后的两个字串分两行显示出来(设键入字串长度小于80个字符).5.实验报告要求(1) 画出相应的程序流程图。
(2)扼要总结多模块程序的特点和编写方法。
实验四输入/输出实验(2学时综合性实验)1.实验目的(1) 掌握输入输出程序设计的概念和方法。
(2) 了解PC机外围芯片8255、8259的功能。
(3)学习如何在PC机上编写具有输入输出功能的程序,包括8255、8259芯片的使用方法。
2.实验说明本实验要求自行编写一个键盘输入处理程序,它可以完成键盘字符的读入并进行屏幕显示,本实验要利用IBM—PC系统的硬件结构,分别使用外围芯片8255及8259。
在本例中,利用8255A的A端做数据输入,对应的端口地址为60H;利用B端口作控制端输入,端口地址为61H。
8255A的控制端口地址为63H 。
本例的8259中断控制器,其IRQ1端用于键盘中断请求线。
键盘通过它可以响CPU发出中断请求。
8259的I/O 端口地址为21H,可以写入中断屏蔽字,以对8个中断源是否容许中断进行控制。
在每次中断结束时,要通过I/O端口地址20H写回一个中断结束命令EOI ,使8259可以清除本次中断。
因此本实验既属于输入输出实验,也属于中断实验。
有关说明将详细地附在参考程序中。
3.实验内容利用pc机键盘,编写一个读入并显示键盘输入的演示程序。
该程序只接受常规字符(包括回车键及退格键),对特殊功能键不进行处理。
在程序中设置这些特殊功能键对应0编号即可,凡是检测到键位编号为0值时,均忽略对它们的处理。
有键按下时,送出的扫描码的D7位为0时,当键抬起时,扫描的码D7位为1,以判定键是否被按下。
(1) 预习输入输出程序设计的特点和方法。
(2) 仔细阅读参考程序,弄清外围芯片接口初始化的意义和方法。
5.实验步骤(1) 建立源文件,并通过汇编和连接,产生可执行文件。
(2) 运行程序,观察常规字符键及功能键按下时程序的反应,6.实验报告要求(1) 给出程序框图,包括主程序框图、中断处理程序框图。
(2)说明输入输出程序设计的特点。
(3)讨论:将SHIFT键及右SHIFT 键也进行判别处理,它们的扫描码为42及54。
为记录SHIFT键的按动状态,可设一个标志单元KBFLAG,右SHIFT按下,KBFLAG的D0位置1,左SHIFT按下,KBFLAG的D1位置1,放下左右的SHIFT键,KBFLAG的相应恢复为0。
当程序工作时,应能显示上档键的字符。
实验五字符处理程序实验1. 实验目的(1)熟悉串操作指令的功能与应用(2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。