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

合集下载

80X86汇编程序设计实验教程共158页word资料

80X86汇编程序设计实验教程共158页word资料

第1 汇编语言程序的运行方式汇编编语言是面向机器的低级语言,它的每条指令都是机器指令的助记符,其上机运行的方式常有两种:一是在借助程序调试工具DEBUG,编写小的汇编语言程序,直接在DEBUG环境下运行之。

二是借助文本编辑器编写汇编语言源程序,然后借助汇编器汇编生成目标代码,再连接生成可执行文件,在命令行(或命令提示符)下运行之。

1.1在DEBUG下运行汇编程序在MS-DOS、WINDOWS 98、WINDOWS 2000和WINDOWS XP中都提供有程序调试工具DEBUG,其文件名是DEBUG.EXE,可以在命令提示符“>”下运行之。

在进入DEBUG的提示符“-”之后,用户可以通过DEBUG的汇编命令输入汇编语言源程序,并将其汇编成机器语言程序加载存储到指定的地址空间,然后便可运行、调试输入的程序。

使用DEBUG运行汇编语言程序简单方便,但只能编写仅含一个代码段的小型程序,这对学习汇编语言的指令,了解、熟悉指令的功能带来极大的方便。

例1.1在DEBUG下运行如下程序:mov dl,33h ;字符“3”的ASCII码送dlmov ah,2 ;使用INT 21H的2号功能int 21h ;进入功能调用,输出“3”int 20h ;BIOS中断,结束当前程序,返回程序系统该程序运行结果是在显示器上输出一个字符“3”。

如果要输出其它字符,可以改变程序中送输入dl中的ASCII码。

下面我们给出在WINDOWS XP下运行该程序的步骤:图1 命令指符窗口⑴进入DEBUG运行附件下的命令提示符,如图1所示。

在提示符下输入DEBUG,即:C:\>debug<Enter>屏幕显示符“-”。

注:“<Enter>”表示按回车键。

⑵输入程序并汇编在DEBUG的指示符下用汇编命令a输入并汇编程序:-a 1000B25:0100 mov dl,33<Enter>0B25:0102 mov ah,2<Enter>0B25:0104 int 21<Enter>0B25:0106 int 20<Enter>0B25:0108<Enter>⑶运行程序用命令g运行输入的程序:-g=1003Program terminated normally说明:程序输入汇编完成后,可以生成一个在命令指示下直接运行的文件,然后在命令提示符下运行。

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

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

前言《汇编语言程序设》在计算机科学中是一门综合性的专业基础课,是计算机专业的核心课程。

它不仅是一般程序设计的基础,而且也是设计和实现编译程序、操作系统及其它系统程序和大型应用程序的重要基础。

它为后续专业课程的学习打下了理论基础和实践基础。

由于汇编语言程序设中有大量的指令,因此汇编语言程序设实验课在教学中占有重要的地位。

通过实验可以使学生更好的巩固和掌握所学的内容,进一步增强动手能力和解决实际问题的能力。

为了提高实验的效率,任课教师提前一周布置实验任务,并且进行一定的分析和讲解,要求学生进行准备工作。

准备工作包括查找资料,设计算法,写出预习报告,其中预习报告包括题目的解题思想,概要设计,实现算法的源代码清单等。

每次实验前,学生应向实验指导教师上交实验预习报告,预习报告经指导教师认可后方能进行实验。

实验完毕写出实验报告,用A4纸打印成册(源程序存盘),由学习委员统一收齐交指导教师审阅评定。

实验成绩考核:实验成绩占《数据结构》总评成绩的20%,其中实验效果占10分,出勤率和实验报告各占5分。

有以下情形之一者,实验成绩为不及格:1.迟到,早退,无故缺勤总共3次及以上者;2.未按时完成实验达4次及以上者;3.缺交实验报告3次及以上者。

实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。

2.熟悉DEBUG软件的使用。

3.掌握简单程序的编程方法。

二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。

各种I/O设备所提供和接收的数据编码不尽相同。

为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。

例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。

一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。

该方法经济但速度慢。

2.硬件法利用专用代码转换集成电路进行转换。

80X86汇编语言程序设计 实验报告2

80X86汇编语言程序设计 实验报告2

80X86汇编语言程序设计实验报告专业:班级:日期:成绩:第二次试验指导老师:学生姓名:学号:一、实验目的(1) 加深对一些常用的汇编指令的理解;(2) 加深对常用DOS功能调用指令的理解;(3) 进一步熟悉TD的使用。

二、实验内容1、《80X86汇编语言程序设计》教材中 P45的 2.3题。

要求:(1) 分别记录执行到“MOV CX,10”和“INT 21H”之前的(BX), (BP),(SI),(DI)各是多少。

(2) 分别记录程序执行初期与退出之前数据段开始40个字节的内容,指出运行结果是否与设想的一致。

2、《80X86汇编语言程序设计》教材中 P45的 2.4题。

要求:(1) 实现的功能不变。

(2) 内存单元中数据的访问采用变址寻址方式。

(3) 记录程序执行到退出之前数据段开始40个字节的内容,检查程序运行结果是否与设想的一致。

3、编写程序利用DOS 10号功能调用输入一个字符串,统计字符串中字符0、1、…、9出现的次数并显示出来(假设每个字符最多出现9次,若大于9次则显示为x)。

三、实验步骤及结果1、输入源程序,如下:.386STACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSDA TA SEGMENT USE16BUF1 DB 0,1,2,3,4,5,6,7,8,9BUF2 DB 10 DUP(0)BUF3 DB 10 DUP(0)BUF4 DB 10 DUP(0)DA TA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DA TA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV SI,OFFSET BUF1MOV DI,OFFSET BUF2MOV BX,OFFSET BUF3MOV BP,OFFSET BUF4MOV CX,10LOPA: MOV AL,[SI]MOV [DI],ALINC ALMOV [BX],ALADD AL,3MOV DS:[BP],ALINC SIINC DIINC BPINC BXDEC CXJNZ LOPAMOV AH,4CHINT 21HCODE ENDSEND START(1)进行单步调试。

实验五 80x86汇编语言程序设计

实验五 80x86汇编语言程序设计

计算机组成原理与汇编元程序设计实验报告实验五 80x86汇编语言程序设计1.按要求编写一个汇编语言程序,实现下面的功能:1)在计算机屏幕上输出自己的学号和姓名拼音;2)在计算机屏幕上输出99乘法表。

1*1=1 1*2=2 1*3=3……1*8=8 1*9=92*1=2 2*2=4 2*3=6……2*8=16 2*9=183*1=3 3*2=6 3*3=7……3*8=24 3*9=27………………8*1=8 8*2=16 8*3=24 ……8*8=64 8*9=729*1=9 9*2=18 9*3=27 ……9*8=72 9*9=813)从键盘输入任意两个一位10进制数据,按99乘法表的格式输出这两个数据的乘法运算表达式;2. 编写设计一个2,10,16进制的码制转换程序,程序输入某进制的数据,转换为其他两种进制数据输出,要求:1) 程序可以输入<65536的任意进制的数据;2) 保证输入的数据为正确的进制数据,如果输入不正确,给出错误提示,然后要求重新输入;(比如要输入10进制数据,输入的必须是0-9,如果输入其他,则错误)3)程序执行输入输出的时请先给出一定的提示,比如“please input 4 bit decimal number:”“output decimal data:”等;要求:1. 提供算法与程序框图;2. 提供源程序,在源程序空白位置,对重要的源程序进行必要的注释;3. 将源程序以你学号后6位为文件名进行保存,并进行编译、链接生成exe文件,执行生成的exe文件,并验证程序的各个功能;提供截图,在截图空白位置,进行简单的说明;计算机组成原理与汇编元程序设计实验报告云南大学软件学院实验报告指导教师 (签名):1.乘法程序程序功能:利用int 21的9号功能输出保存在data段中的学号和姓名字符;利用两层循环控制输出9*9乘法表;接收被乘数和乘数,计算结果并输出表达式。

程序框图:源程序:运行结果:2.进制转换程序功能:输入二,十,十六进制任意一种数据,通过计算转化为另外两种类型的数据并输出,数据范围最大不超过65535程序框图:源代码:运行结果:输入二进制输入十进制输入十六进制。

80x86汇编语言程序设计教程==

80x86汇编语言程序设计教程==

17
1.2.1 无符号数
8位、16位、32位、……, 每位都是数值位
8位:0000 0000B~1111 1111B 0 255 16位:0000H~0FFFFH 0 65535
18
1.2.2 带符号数、原码
8位、16位、32位、……, 最高位是符号位,0=正,1=负 其余每位都是数值位
原码:低7位是表示绝对值 1111 1000 0000 0111 1111B 0FFH 0000B 80H 0000B 00H 1111B 7FH -127 -0 +0 +127
取指、取数过程
①AB送出地址; ②CB送出M/IO、/RD; ③存储器从DB送 机器码或数据; ④CPU从DB上读入。

存储器 CPU
AB I/O接口 DB
③ ②

CB
32
存数过程

存储器 CPU AB I/O接口 DB
④ ③

CB
AB送出地址; DB送出数据; CB送出M/IO、/WR; 存储器从DB读入数据
控制应用 信号处理 移动设备 台式微机
MCS51、PIC TMS320 ARM Z80、80X86
8位为主 16位为主 32位为主 32位为主
8位:8080、8085、8088 Intel 80x86系列:向上兼容 16位:8086、(80186)、80286 32位:80386、80486、Pentium、…… 64位:双核、4核、……
AH BH CH DH SI DI BP SP CS DS SS ES IP FLAGS
36
8位
AL BL CL DL
AX 累加器
Accumulator
BX 基址寄存器 Base CX 计数寄存器 Count DX 数据寄存器 Data 源变址寄存器 Source Index 目的变址寄存器 Destination Index 基址指针 Base Pointer 堆栈指针 Stack Pointer 代码段寄存器 Code Segment 数据段寄存器 Data Segment 堆栈段寄存器 Stack Segment 扩展段寄存器冯诺依曼型计算机:存储程序计算机

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

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汇编语言程序设计的理解,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,为后继课程——接口技术打下坚实的程序设计基础。

计算机组成原理与汇编语言实验四80x86汇编语言程序开发实验

计算机组成原理与汇编语言实验四80x86汇编语言程序开发实验

计算机组成原理与汇编语言实验四80x86汇编语言程序开发实验计算机组成原理与汇编元程序设计实验报告实验四80x86汇编语言程序开发实验1.汇编语言程序上机过程,实验步骤:(1)用用文字编辑工具(EDITPLUS)将源程序输入,保存文件其扩展名为.ASM;(2)用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。

若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过;(3)用LINK将.OBJ文件连接成可执行的.EXE文件;(4)在DOS状态下运行LINK产生的.EXE文件;2.编写一个汇编程序,实现下面的功能:(1)在数据段中定义10个标题msg0到msg9,标题的内容任意;(2)采用1号DOS功能子程序,输入0到9中任意1个数值,然后显示对应的msg0到msg9中的某一个标题;(3)如果输入数值10,则显示输出全部10个标题;(4)程序循环执行,直到输入ESC键,程序结束;(5)根据1的步骤,编译链接生产exe文件,并测试程序的功能;源程序代码(截图)data segmentmsg0 db 'xxx',0dh,0ah,'$'msg1 db '学号',0dh,0ah, '$'msg2 db 'q',0dh,0ah, '$'msg3 db 'w',0dh,0ah, '$'msg4 db 'e',0dh,0ah,'$'msg5 db 'r',0dh,0ah,'$'msg6 db 't',0dh,0ah,'$'msg7 db 'y',0dh,0ah,'$'msg8 db 'u',0dh,0ah,'$'msg9 db 'i',0dh,0ah,'$'msg10 db' xxxq w e r t y u i',0dh,0ah,'$'data endscode segmentAssume cs:code,ds:datastart:mov ax,datamov ds,axagain:mov ah,01int 21hcmp al,'0'jz zerocmp al,'1'jz onecmp al,'2'jz twocmp al,'3'计算机组成原理与汇编元程序设计实验报告cmp al,'4' jz fourcmp al,'5'jz fivecmp al,'6'jz sixcmp al,'7'jz sevencmp al,'8'jz eightcmp al,'9'jz ninecmp al, 'a'jz allcmp al,1bhjz exitzero:mov dx,offset msg0 jmp outputone:mov dx,offset msg1 jmp outputtwo:mov dx,offset msg2 jmp output three:mov dx,offset msg3 jmp outputfour:mov dx,offset msg4 jmp outputfive:mov dx,offset msg5 jmp outputsix:mov dx,offset msg6 jmp output seven:mov dx,offset msg7 jmp output eight:mov dx,offset msg8jmp outputnine:mov dx,offset msg9计算机组成原理与汇编元程序设计实验报告all: mov dx,offset msg10jmp outputoutput:mov ah,09int 21hjmp againexit: mov ah,4chint 21hcode endsend start程序功能测试(截图)分析(手写)实验总结(手写):。

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (5)1.1进位计数制与不同基数的数之间的转换 (5)1.2二进制数和十六进制数的运算 (6)1.3计算机中数和字符的表示 (7)1.4几种基本的逻辑运算 (7)第 2 章80X86计算机组织 (8)2.180X86微处理器 (8)2.2基于微处理器的计算机系统构成 (8)2.3中央处理机 (9)2.4存储器 (10)2.5外部设备 (11)第 3 章80X86的指令系统和寻址方式 (12)3.180X86的寻址方式 (12)3.2程序占有的空间和执行时间 (14)3.380X86的指令系统 (14)第 4 章汇编语言程序格式 (31)4.1汇编程序功能 (31)4.2伪操作 (31)4.3汇编语言程序格式 (35)4.4汇编语言程序的上机过程 (38)第 5 章循环与分支程序设计 (40)5.1循环程序设计 (40)5.2分支程序设计 (41)5.3如何在实模式下发挥80386及其后继机型的优势 (41)第 6 章子程序结构 (43)6.1子程序的设计方法 (43)6.2子程序的嵌套 (44)6.3子程序举例 (44)第7 章高级汇编语言技术 (46)7.1宏汇编 (46)7.2重复汇编 (47)7.3条件汇编 (48)第8 章输入/输出程序设计 (49)8.1I/O设备的数据传送方式 (49)8.2程序直接控制I/O方式 (50)8.3中断传送方式 (50)第9 章BIOS和DOS中断 (53)9.1键盘I/O (53)9.2显示器I/O (55)9.3打印机I/O (56)9.4串行通信口I/O (57)第10 章图形与发声系统的程序设计 (58)10.1显示方式 (58)10.2视频显示存储器 (58)10.3EGA/VGA图形程序设计 (59)10.4通用发声程序 (60)10.5乐曲程序 (61)第11 章磁盘文件存取技术 (62)11.1磁盘的记录方式 (62)11.2文件代号式磁盘存取 (63)11.3字符设备的文件代号式I/O (64)11.4BIOS磁盘存取功能 (65)附录:《IBM—PC汇编语言程序设计》习题参考答案 (66) 第一章.习题 (66)第二章.习题 (67)第三章.习题 (68)第四章.习题 (81)第五章.习题 (86)第六章.习题 (104)第七章.习题 (117)第八章.习题 (124)第九章.习题 (129)第十章.习题 (132)第十一章.习题 (143)第 1 章基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

80x86汇编语言程序设计

80x86汇编语言程序设计

2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
三、焊料 铅与锡熔形成合金(即铅锡焊料)后,具有一系列铅和锡 不具备的优点:
熔点低。各种不同成 分的铅锡合金熔点均低于 铅和锡的熔点,利于焊接。
机械强度高,抗氧化。 表面张力小,增大了 液态流动性,有利于焊接 时形成可靠接头。
2019/8/3
手动送锡电烙铁
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
温 控 式 电 烙 铁
2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
2019/8/3
热风拔焊台
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
2.手工锡焊基本操作
一、焊接操作姿势
电烙铁拿法有三种。
焊锡丝一般有两种拿法。
2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
使用电烙铁要配置烙铁架,一般放置在工作台右前 方,电烙铁用后一定要稳妥放与烙铁架上,并注意导线 等物不要碰烙铁头。
温度比焊料熔化温度高50℃较为适宜。
3 用烙铁对焊点加力加热是错误的。 会造成被焊件的损伤,例如电位器、开关、接插件的
焊接点往往都是固定在塑料构件上,加力的结果容易造成 元件失效。
2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
3 手工焊接技术要点 一、印制电路板安装与焊接

80X86汇编语言程序设计 实验报告3

80X86汇编语言程序设计 实验报告3

80X86汇编语言程序设计实验报告专业:班级:日期:成绩:第三次试验指导老师:学生姓名:学号:一、实验目的(1) 加深对一些常用的汇编指令的理解;(2) 掌握基本的程序设计方法;(3) 进一步熟悉TD的使用。

二、实验内容1、《80X86汇编语言程序设计》教材中 P96的 3.11 题。

(1)请事先指出程序运行结束后,显示器显示的内容。

(2)若将NUM的定义改成如下形式:NUM DB 35显示的结果是什么?(3)若将NUM的定义改成如下形式:NUM DB 59显示的结果是什么?(4)若将NUM的定义改成如下形式:NUM DB 75显示的结果是什么?(5)修改该程序,使之能够以16进制形式显示NUM单元中的内容。

2、设在一个缓冲区BUF1中存放了一个串“123GOOD”, 将其以相反顺序拷贝到另一个缓冲区BUF2中。

(用TD观察程序执行前后的数据区,并记录下来)3、输入一个十进制数字串(假定是无符号的),以四位十六进制的形式输出该串对应的值。

例如:Input: 123↙Output: 007BH要求:(1) 画出程序流程图,给出寄存器、存储单元的分配方法;(2) 给出完整的程序清单,有必要的注释。

三、实验步骤及结果1、(1)、程序运行完之后,得到的结果为:(NUM)=39H。

(2)、程序运行完之后,得到的结果为:(NUM)=23H。

(3)、程序运行完之后,得到的结果为:(NUM)=3;H。

(4)、程序运行完之后,得到的结果为:(NUM)=4;H。

(5)、修改后的程序段如下:C1 SEGMENT USE16 ASSUME DS:A1, SS:B1, CS:C1 BEGIN: MOV AX,A1MOV DS,AXLEA DI,BUF0MOV AL,NUMSHR AL,4CMP AL,0AHJAE L1OR AL,30HMOV [DI],ALL2: INC DIMOV AL,NUMAND AL,0FHCMP AL,0AHJAE L3OR AL,30HMOV [DI],ALL4: INC DIMOV BYTE PTR [DI],'H'INC DIMOV BYTE PTR [DI],'$'LEA DX,BUFMOV AH,9INT 21HMOV AH,4CHINT 21HL1: MOV BYTE PTR [DI],'0'INC DISUB AL,0AHADD AL,'A'MOV [DI],ALJMP L2L3: SUB AL,0AHADD AL,'A'MOV [DI],ALJMP L4C1 ENDSEND BEGIN运行后的结果如下:①、当NUM为35时:②、当NUM为59时:③、当NUM为75时:④、当NUM为0ACH时:2、编写的程序如下:.386DATA SEGMENT USE16BUF1 DB '123GOOD$'BUF2 DB 0DATA ENDSSTACK SEGMENT USE16 STACK STACK ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATAMOV DS,AXMOV DI,OFFSET BUF1MOV BX,OFFSET BUF2MOV CL,[BX]LOPA: MOV DL,[DI]CMP DL,'$'JE L1INC DIJMP LOPAL1: CMP DI,0JE EXITDEC DIMOV DL,[DI]MOV CL,DLMOV [BX],CLINC BXJMP L1EXIT: MOV CL,'$'MOV [BX],CLLEA DX,BUF2MOV AH,9INT 21HMOV AH,4CHINT 21HCODE ENDSEND START运行后的结果如下:运行程序前数据区显示为:运行程序后数据区显示为:3、①、画出流程图如下:开始输入一个数字串将输入的数字串转化为10进制数存储。

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

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)仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。

(完整word)《汇编语言》实验指导书-201610,推荐文档

(完整word)《汇编语言》实验指导书-201610,推荐文档

《汇编语言》实验指导书计算机学院网络工程系李冬艳2016.10.1实验一汇编语言上机环境及基本操作一、实验目的及要求1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、实验内容1.汇编语言源程序的建立本例中给出的程序是要求编写3+5=8的程序,并把8存入AL或AX中。

设定源程序的文件名为ABC.ASM 。

(用任何一个种文本编辑器编写此程序,存盘)或双击桌面的“Masm for Windows 集成实验环境 2012.5”快捷文件图标,进入汇编语言集成开发环境DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;======================================MOV AX ,3 ;自己写的代码Mov BX ,5 ;自己写的代码ADD AX ,BX ;自己写的代码(只有3条);此处输入代码段代码;======================================MOV AH,4CHINT 21HCODES ENDSEND START程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,汇编程序MASM.exe的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

3.用链接程序link.exe生成可执行程序文件经汇编以后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过链接以后,才能成为可执行文件(即扩展名为.EXE)。

汇编语言程序设计实验指导书、实验教学大纲

汇编语言程序设计实验指导书、实验教学大纲

附件1-3《汇编语言程序设计课程》实验教学指导书课程编号:撰写人:刘伏贵审核人:湘潭大学信息工程学院二○○七年十月十八日前言一、实验总体目标《汇编语言程序设计》是一门重要的专业选修课,同时也是一门实践性很强的课程。

通过实验使学生对所学的汇编语言程序设计内容加深理解,增强实践动手能力,培养学生分析问题和解决问题的能力,以及进行汇编语言程序设计的实践。

在汇编语言程序设计课程的学习过程中,将分别开出《汇编程序与调试器的使用》、《DOS 命令与磁盘文件操作》、《汇编语言与结构化程序设计》、《汇编语言子程序设计》、《十进制数据直接处理程序设计》、《结构数据与汇编语言程序设计》、《记录数据与汇编语言程序设计》、《汇编语言程序设计综合实验》等八个实验。

由于汇编语言程序设计涉及到硬件、操作系统等诸方面的知识,完成实验的难度大。

因此,要求每一个学生必须按照教师的安排和要求,认真完成每一个实验,从而达到培养现代程序设计基本素养的目的。

二、适用专业年级专业:计算机科学与技术、网络工程年级:二年级三、先修课程《C语言程序设计》、《计算机组成原理》四、实验项目及课时分配五、实验环境个人计算机:120台Win 32 操作系统MS DOSMASM 6.0 及其以上版本的汇编程序及配套的80x86 汇编语言程序开发环境六、实验总体要求1、汇编语言程序设计的实验课主要是供学生测试、调试汇编语言程序。

2、必须充分重视实验课。

实验课是汇编语言程序设计课程的重要组成部分,是理论联系实践的重要环节。

通过它,能够培养学生独立分析和解决问题的能力。

3、在每个实验之前,学生必须准备好被测程序的有关设计资料(包括程序的基本设计说明、程序流程图、汇编语言程序清单等)、测试数据、测试驱动程序、测试需要的“桩模块”等。

4、必须做好实验前的一切准备工作,包括程序测试/调试的详细过程安排等。

在实验中应严格按照预先确定的实验过程进行实验,决不允许在实验过程中准备实验程序、测试数据与测试/调试过程计划。

(完整版)汇编语言程序设计实验篇(emu8086),推荐文档

(完整版)汇编语言程序设计实验篇(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

微机原理与汇编语言程序设计实验指导书

微机原理与汇编语言程序设计实验指导书

《微机原理与汇编语言程序设计》实验指导书上海工程技术大学电子电气工程学院目录实验一80x86汇编编程环境和工具实验 (1)实验二80x86指令系统实验 (4)实验三80x86汇编编程方法和技巧实验 (7)实验一 80x86汇编编程环境和工具实验一、实验目的1 、掌握汇编语言开发环境和DEBUG的基本命令2 、掌握Intel 80X86的寻址方式二、实验环境1 、硬件:Intel 80X862 、软件:DEBUG三、实验内容1 、查看内存中的数据使用Debug的D命令查看微型计算机主板ROM中写有生产日期,在内存FFF00H-FFFFFH 的某几个单元中,找到这个生产日期并试图改变它,记录操作过程和结果;2 、修改内存中的数据使用Debug的E命令向内存B8100H开始的单元依次写入以下数据,观察产生的结果并记录操作过程和结果:B8100H-B8107H:41 01 42 02 43 03 44 043 、查看内存中的指令使用Debug的U命令查看8086上电复位后执行的第一条指令的内容,8086上电复位后执行的第一条指令地址为FFFF0H,试用Debug的A命令改变存储器地址FFFF0H上的指令,记录操作过程和结果,观察是否能改变8086上电复位后执行的第一条指令;4 、使用Debug工具将以下数据和指令写入内存并观察运行结果编程提示:在DEBUG与汇编源程序中输入数据和指令的不同1 、进制在汇编源程序中数据的默认进制是十进制,如果要指令中出现十六进制数据,必须在它的后面加上十六进制后缀H,如果这个十六进制数据还是以字母开头,必须在它的前面加0,例如MOV AL,0AH(如果不加0,这条指令就变成MOV AL,AH);而在DEBUG中所有数据只能以十六进制显示和输入。

2 、存储器操作数的段前缀(即段地址)在汇编源程序中,通常使用段前缀为指令中出现的存储器操作数显示标明所在段,例如MOV AX,DS:[0000]或MOV AX,ES:[0000];而使用DEBUG输入指令时,不能在指令中显式标明存储器操作数的段前缀而使用默认段前缀,例如MOV AX,[0000]和MOV AX,[BX]中操作数的默认段前缀都是DS。

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

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)本次实验的目的及要求,实验内容。

(2)设计说明:用来说明程序的功能和结构,它包括:程序名、功能、原理及算法说明、数据结构及主要符号名说明等。

(3)程序框图: 根据设计思想给出规范的程序流程图,流程图规范参看附录E。

(4)调试说明:总结经验提高编程及调试能力。

它包括:调试情况,如上机时遇到的问题及解决的办法,观察到的现象及其分析,对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会等。

(5)使用说明:程序提供给用户使用时必须作出的说明。

如:程序的使方法,调用方式,操作步骤等;要求输入信息的类型及格式;出错信息的含义及程序的使用范围等。

(6)程序清单。

1.2 实验方法例1.1 求两数之和。

试编写一程序,输出提示信息,从键盘输入两个数number1和number2,求它们的之和并显示结果。

1.进入windows下的DOS命令行环境鼠标点击Windows系统的“开始”――>“运行”,输入“cmd”回车后(如图1.1),进入windows下的DOS命令行环境(图1.2)。

图1.1图1.2 DOS命令行环境这里设定所需软件都安装在C盘的masm目录下。

使用DOS的CD命令进入masm 目录(图1.3)。

输入:cd c:\masm(回车)图1.3 进入汇编程序目录2.调用文本编辑程序EDIT建立汇编源文件(后缀名为.asm)在当前目录,输入:edit example.asm后就可进入编辑环境(图1.4)。

图1.4 EDIT编辑环境也可以用其他编辑程序如记事本等来建立源程序(建议不要用office word)。

建议以example.asm为文件名的源文件如图1.5。

;********************************************************************* ; Example assembly language program -- adds two numbers; Author: R. Detmer; Date: revised 7/97;--------------------------------------------------------------------- .386.MODEL FLAT;--------------------------------------------------------------------- ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD;--------------------------------------------------------------------- INCLUDE io.h ; header file for input/output;---------------------------------------------------------------------cr EQU 0dh ; carriage return characterLf EQU 0ah ; line feed;--------------------------------------------------------------------- .STACK 4096 ; reserve 4096-byte stack;--------------------------------------------------------------------- .DATA ; reserve storage for datanumber1 DWORD ?number2 DWORD ?prompt1 BYTE "Enter first number: ", 0prompt2 BYTE "Enter second number: ", 0string BYTE 40 DUP (?)label1 BYTE cr, Lf, "The sum is "sum BYTE 11 DUP (?)BYTE cr, Lf, 0;--------------------------------------------------------------------- .CODE ; start of main program code_start:output prompt1 ; prompt for first numberinput string, 40 ; read ASCII charactersatod string ; convert to integermov number1, eax ; store in memoryoutput prompt2 ; repeat for second numberinput string, 40atod stringmov number2, eaxmov eax, number1 ; first number to EAXadd eax, number2 ; add second numberdtoa sum, eax ; convert to ASCII charactersoutput label1 ; output label and sumINVOKE ExitProcess, 0 ; exit with return code 0PUBLIC _start ; make entry point public;--------------------------------------------------------------------- END ; end of source code;********************************************************************* 图1.5 例1.1的源文件example.asm3.用汇编程序ml对源文件汇编产生目标文件(后缀名为.obj)输入: ml /c /coff /Zi example.asm显示如图1.6,则表示汇编成功,同时生成了目标文件(example.obj)。

如果汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。

图1.64.用连接程序link产生可执行文件(后缀名为.exe)输入: link /debug /subsystem:console /entry:start/out:example.exe example.obj io.obj kernel32.lib显示如图1.7,则表示连接成功,同时生成了可执行文件(example.exe)图1.75.执行程序可直接在当前目录下执行如下:输入:example显示结果如图1.8。

图1.8 example.exe运行结果6.查看列表文件(后缀名为.lst)在进行汇编时候,如果在输入参数中加上“/Fl”,则可生成和列表文件(example.lst)。

输入: ml /c /coff /Zi /Fl example.asm用编辑软件打开example.lst(图1.9)。

Microsoft (R) Macro Assembler Version 6.11 08/03/05 15:19:43example.asm Page 1 - 1; Example assembly language program -- adds two numbers; Author: R. Detmer; Date: revised 7/97.386.MODEL FLATExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORDINCLUDE io.h ; header file for input/outputC ; IO.H -- header file for I/O macrosC ; 32-bit version for flat memory modelC ; R. Detmer last revised 8/2000C .NOLIST ; turn off listingC .LIST ; begin listingC= 0000000D cr EQU 0dh ; carriage return character = 0000000A Lf EQU 0ah ; line feed.STACK 4096 ; reserve 4096-byte stack00000000 .DATA ; reserve storage for data00000000 00000000 number1 DWORD ?00000004 00000000 number2 DWORD ?00000008 45 6E 74 65 72 prompt1 BYTE "Enter first number: ", 020 66 69 72 7374 20 6E 75 6D62 65 72 3A 2020 000000001E 45 6E 74 65 72 prompt2 BYTE "Enter second number: ", 020 73 65 63 6F6E 64 20 6E 756D 62 65 72 3A20 20 0000000035 00000028 [ string BYTE 40 DUP (?)00]0000005D 0D 0A 54 68 65 label1 BYTE cr, Lf, "The sum is "20 73 75 6D 2069 73 200000006A 0000000B [ sum BYTE 11 DUP (?)00]00000075 0D 0A 00 BYTE cr, Lf, 000000000 .CODE ; start of main program code 00000000 _start:output prompt1 ; prompt for first numberinput string, 40 ; read ASCII charactersatod string ; convert to integer 0000002E A3 00000000 R mov number1, eax ; store in memoryoutput prompt2 ; repeat for second numberinput string, 40atod string00000061 A3 00000004 R mov number2, eax00000066 A1 00000000 R mov eax, number1 ; first number to EAX0000006B 03 05 00000004 R add eax, number2 ; add second numberdtoa sum, eax ; convert to ASCII charactersoutput label1 ; output label and sumINVOKE ExitProcess, 0 ; exit with return code 000000097 PUBLIC _start ; make entry point publicEND ; end of source codeMicrosoft (R) Macro Assembler Version 6.11 08/03/05 15:19:43example.asm Symbols 2 - 1Macros:N a m e Typeatod . . . . . . . . . . . . . . Procatoi . . . . . . . . . . . . . . Procdtoa . . . . . . . . . . . . . . Procinput . . . . . . . . . . . . . Procitoa . . . . . . . . . . . . . . Procoutput . . . . . . . . . . . . . ProcSegments and Groups:N a m e Size Length Align Combine ClassFLAT . . . . . . . . . . . . . . GROUPSTACK . . . . . . . . . . . . . 32 Bit 00001000 DWord Stack 'STACK'_DATA . . . . . . . . . . . . . 32 Bit 00000078 DWord Public 'DATA'_TEXT . . . . . . . . . . . . . 32 Bit 00000097 DWord Public 'CODE' Procedures, parameters and locals:N a m e Type Value Attr$$$$$$00001 . . . . . . . . . . P Near 00000001 _TEXT Length= 00000096 Private ExitProcess . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALLSymbols:N a m e Type Value Attr@CodeSize . . . . . . . . . . . Number 00000000h@DataSize . . . . . . . . . . . Number 00000000h@Interface . . . . . . . . . . . Number 00000000h@Model . . . . . . . . . . . . . Number 00000007h@code . . . . . . . . . . . . . Text _TEXT@data . . . . . . . . . . . . . Text FLAT@fardata? . . . . . . . . . . . Text FLAT@fardata . . . . . . . . . . . . Text FLAT@stack . . . . . . . . . . . . . Text FLATLf . . . . . . . . . . . . . . . Number 0000000Ah_start . . . . . . . . . . . . . L Near 00000000 _TEXT Publicatodproc . . . . . . . . . . . . L Near 00000000 FLAT Externalatoiproc . . . . . . . . . . . . L Near 00000000 FLAT Externalcr . . . . . . . . . . . . . . . Number 0000000Dhdtoaproc . . . . . . . . . . . . L Near 00000000 FLAT Externalinproc . . . . . . . . . . . . . L Near 00000000 FLAT Externalitoaproc . . . . . . . . . . . . L Near 00000000 FLAT Externallabel1 . . . . . . . . . . . . . Byte 0000005D _DATAnumber1 . . . . . . . . . . . . DWord 00000000 _DATAnumber2 . . . . . . . . . . . . DWord 00000004 _DATAoutproc . . . . . . . . . . . . L Near 00000000 FLAT Externalprompt1 . . . . . . . . . . . . Byte 00000008 _DATAprompt2 . . . . . . . . . . . . Byte 0000001E _DATAstring . . . . . . . . . . . . . Byte 00000035 _DATAsum . . . . . . . . . . . . . . Byte 0000006A _DATA0 Warnings0 Errors图1.9 列表文件example.lst7.使用调试软件windbg调试程序1)打开Windbg程序输入:windbg或直接在window界面下打开C盘上的文件夹masm,双击 windbg.exe程序的图标,也可以运行windbg,并看到如图1.10的窗口。

相关文档
最新文档