湘南学院级汇编教案2.docx

上传人:b****1 文档编号:2421807 上传时间:2022-10-29 格式:DOCX 页数:97 大小:199.11KB
下载 相关 举报
湘南学院级汇编教案2.docx_第1页
第1页 / 共97页
湘南学院级汇编教案2.docx_第2页
第2页 / 共97页
湘南学院级汇编教案2.docx_第3页
第3页 / 共97页
湘南学院级汇编教案2.docx_第4页
第4页 / 共97页
湘南学院级汇编教案2.docx_第5页
第5页 / 共97页
点击查看更多>>
下载资源
资源描述

湘南学院级汇编教案2.docx

《湘南学院级汇编教案2.docx》由会员分享,可在线阅读,更多相关《湘南学院级汇编教案2.docx(97页珍藏版)》请在冰豆网上搜索。

湘南学院级汇编教案2.docx

湘南学院级汇编教案2

要求:

1、在汇编语言之前,首先要熟悉一些常见术语、概念以及硬件知识等等。

2、学习内容

第1~2章 数制、码制、硬件组成及原理

第3~4章 编程工具:

指令系统、寻址方式、伪操作、汇编语言格式

第5~9章 编程方法:

循环、分支、子程序、宏汇编、中断、I/O程序设计方法、BIOS和DOS系统功能调用方法、多模块连接技术等等。

第10~11章 实际应用:

图形显示、发声、磁盘文件存取

注:

第1~9章授课,10~11章则结合实验由学生自学并上机。

本讲义主要针对8086/8088(包含8位、16位寄存器,不包含32位寄存器),

所需课时数:

课内:

理论课:

48学时

上机课:

16学时

课内:

课外=1:

1.5

汇编语言与机器语言相比较,优点为:

1)程序易编制,出错机会少,容易调试

2)算法刻画细致

3)程序紧凑,占用内存空间少,执行速度快

4)能充分发挥计算机的硬件功能

缺点:

1)计算机不能直接认识、执行,须经汇编变为机器语言程序。

2)通用性差(即在某一类型机上能运行的汇编程序可能不能在别的类型机上运行,因为不同系列机的指令系统不一样,硬件结构也可能有差别)。

汇编语言的学习方法:

1)要对计算机硬件组成及原理有一定的了解,比如:

80X86寄存器组(寄存器的名称、作用及用法)、内存的编址及分段技术、

2)从模仿开始,注重上机实践。

汇编语言不同于其它高级语言,汇编语言的程序结构(模式)和指令格式有其独特性。

开始接触汇编语言,难免会感到陌生和困难。

不妨先阅读一些经典程序,从模仿(编程)开始,慢慢熟悉汇编语言的上机过程、它的程序模式和指令格式的特点,等到掌握了80x86的指令系统(总共一百多条常用指令)后,就可以随心所欲地用汇编语言进行编程了。

3)注重学习能力的培养

编程过程中遇到什么问题,要尝试自己去调试,并不断总结经验。

另外,不可拘泥教材,要多参考其它版本的汇编语言教材。

4)从量变到质变

学习汇编语言,必须有意识地编写一定数量的程序,必须认真调试大量的程序,有量变才有质变,除此之外,别无它法。

需要提醒同学们的是,我们的上机课时总共只有16课时,这是远远不够的。

课外多去416机房进行编程练习是有益且必要的。

冰冻三尺,非一日之寒

水滴石穿,非一日之功

先来看几个源程序:

例1

Copy40a.asm

把从源地址(DS:

SI)开始的40个‘a’,复制到目标地址(ES:

DI)开始的40个字节中。

程序如下:

datasegment

s_bufferdb40dup('a')

dataends

extrasegment

d_bufferdb40dup(?

extraends

codesegment

assumecs:

code,ds:

data,es:

extra

start:

movax,data

movds,ax

movax,extra

moves,ax

leasi,s_buffer

leadi,d_buffer

cld

movcx,40

repmovsb

ret

int21h

movah,4ch

codeends

endstart

例2计算y=5x-2(令x=7)

5x-2.asm

程序如下:

dsegsegment

xdb7

ydw?

dsegends

ssegsegmentstack

stkdb20dup(0)

ssegends

csegsegment

assumecs:

cseg,ds:

dseg,ss:

sseg

start:

movax,dseg

movds,ax

movax,sseg

movss,ax

movsp,sizestk

moval,x

movbl,5

imulbl

subax,2

movy,ax

int21h

movah,4ch

csegends

endstart

以上程序中每条指令的功能,等我们学习完指令系统后,自然就明白了。

汇编语言的上机环境:

为运行汇编语言程序,磁盘里至少要有如下文件:

1)编辑程序,如edit.exe。

当然如果没有这个文件,用记事本编辑汇编语言源程序也是可以的,只不过源程序的扩展名为.asm,切记。

2)汇编程序,如masm.exe

3)连接程序,如Link.exe

4)调试程序,如Debug.exe(或)

我们使用的是masm5.0,masm5.0中有masm.exe和Link.exe,但不包含edit.exe、Debug.exe(或),为此,可以在自己的计算机上搜索Debug.exe,找到后把Debug.exe备份与masm.exe、Link.exe放在一起。

比如,我们可以把masm.exe、Link.exe、Debug.exe等等环境文件放在C:

>\masm5\目录下。

汇编语言的上机过程:

汇编语言并不能被计算机直接识别和执行,为此,用汇编语言编写的源程序(后缀为.asm)必须先汇编成目标文件(二进制文件,后缀为.obj),再连接形成可执行文件(二进制文件,后缀为.exe),才能被计算机识别和执行。

如前面所述,假设把masm.exe、Link.exe、Debug.exe等环境文件放在C:

>\masm5\目录下。

上机步骤为:

编辑源程序、汇编、连接、运行(或调试)

1)编辑源程序

DOS状态:

edit 例editcopy40a.asm↙(注:

扩展名.asm不可少)

     在Windows操作系统中调用DOS的方法:

‘开始’->‘程序’->‘附件’->‘C:

\命令提示符’

C语言状态:

TC 例TCcopy40a.asm↙

Windows状态:

用记事本即可编辑,但要保存为扩展名为.asm的文件。

(注:

如果masm.exe、Link.exe、Debug.exe等环境文件放在C:

>\masm5\目录下。

源程序编辑完成后,也最好保存到C:

>\masm5\目录下。

2)汇编(使用masm命令)

例 对copy40a.asm进行汇编

C:

>\masm5\masmcopy40a↙

3)连接(使用link命令)

例 对copy40a.asm进行汇编

C:

>\masm5\linkcopy40a↙

4)运行(或调试)

 运行

在DOS状态下,键入文件名回车即可。

例:

C:

>\masm5\copy40a↙

如果程序有显示结果的语句,则结果会显示到屏幕上。

发现有问题,可进一步调试。

(copy40a没有输出语句,所以屏幕上看不到什么东西,)

 调试(使用一些常用的debug命令,关于debug命令,后面有介绍)

如例1:

(把从源地址(DS:

SI)开始的40个‘a’,复制到目标地址(ES:

DI)开始的40个字节中。

C:

>\masm5\debugcopy40a.exe↙

在短‘-’后可输入debug命令,下图是输入u命令(参见debug命令介绍),回车后的情形。

显示内容为:

代码段段基址:

偏移量  机器指令  机器指令对应的汇编指令

下图是在短‘-’后输入t=0,33(参见debug命令介绍),回车后的情形。

T为单步执行命令,表示从代码段下面偏移量为0处开始执行,执行33h(相当于十进制的51)条指令后停止,并显示当前寄存器的状态和下一条将要执行的指令。

在‘-’提示符后输入t=0,33时,为什么是33h(即十进制的51)条指令呢?

我们返回源程序去看看就清楚了。

循环指令‘repmovsb’前面共有11条指令要执行,而movsb总共要重复执行40次(次数由循环计数器cx指定)。

所以执行51条指令后,任务完成。

输入t命令时,要执行指令的数目用16进制数表示,所以是33。

任务完成后,可以通过d命令,查看附加段(也是内存的一个存储区域)下面是否已经有了40个‘a’,如下图所示,在‘-’提示符后输入-d0baa:

0,28↙

其中0baa:

0,表示起始地址,即附加段的开始(由上图知附加段段基址es=0baa),28是16进制数,结束地址,由目标变址寄存器DI=0028可知。

意思是查看附加段下面偏移量从0到28h之间的数个单元的内容。

输入d0baa:

0,28↙后如下图所示:

左边显示为ES:

DI形式,中间显示附加段指定单元的ASCⅡ码值(存储的内容为‘a’,61即为‘a’的ASCⅡ码值),右边为‘字符形式’显示,ASCⅡ码值为61的字符为a。

输入q命令可退出debug,返回到DOS命令状态。

以上,就是汇编语言的上机过程。

同学们可以用例2来尝试一下,看能不能用debug命令看到结果。

(提示:

1、可用记事本编写源程序,并以.asm类型文件保存到环境目录下,如C:

>\masm5\

2、用masm命令对源程序进行汇编

      3、用link命令进行连接

      4、用debug的u命令、t命令、d命令进行调试运行并查看内存单元的内容(因为结果就保存在内存单元))。

Debug(调试)常用命令

C:

>\masm5\debugcopy40a.exe

在键盘上键入如上命令,就将指定的可执行文件从磁盘调入到内存。

Debug将程序装入完毕后,提示短杠‘-’,我们可输入命令进行调试。

Debug常用命令如下:

1)A汇编

功能:

直接输入汇编语句,汇编之后存入到内存中。

格式:

A[地址]

说明:

命令参数[地址]指出汇编之后的机器码存储的起始地址。

地址表示为逻辑地址的形式,即段地址:

偏移量的形式,其中段地址可由DS,ES,CS,SS等表示,缺省为CS,段地址和偏移量都省略时,缺省为CS:

IP。

在进入该命令后,debug用地址提示用户输入程序语句,每输入一句,debug提示下一地址。

在debug的地址提示下按回车即可从该命令退出。

2)U反汇编

功能:

将内存中的机器码程序以指令助记符的形式显示出来。

格式:

U[起始地址,结束地址]

说明:

结束地址省略时,debug则反汇编十几条指令;两地址均省略时,则从上一次u命令结束地址开始反汇编。

若以前没用u命令,则从CS:

IP开始反汇编。

段基址隐含为CS,结束地址只允许用偏移量。

3)T单步执行

功能:

执行一条或数条指令后停止,并将所有寄存器的内容和下一条要执行的指令显示出来。

格式:

T[=地址][,计数]

说明:

[地址]省略时,从CS:

IP开始;[计数]为执行指令的条数(写成16进制数)

4)P单步执行

说明:

P命令的格式与T命令完全相同,功能亦基本相同,只是在遇到call,int指令时,p命令不跟踪到子程序(中断服务程序)中去,在遇到loop,loopz/loope,loopnz/loopne,rep等与重复有关的指令时,一次执行完毕。

5)G执行

功能:

连续执行指令直至遇到断点后停止,并将所有寄存器的内容和下一条要执行的指令显示出来。

格式:

G[=地址][,断点][,断点][,断点][,……]

  说明:

[地址]省略时,从CS:

IP开始执行,段基址隐含为CS;[断点]为G命令执行停止的地址。

6)R显示或修改寄存器内容

功能:

显示或修改寄存器内容

格式:

R[寄存器]

说明:

[寄存器]为16位寄存器名,省略时,显示所有寄存器内容及下一条要执行的指令。

当R带有参数时,则只显示指定寄存器的内容,显示之后,等待用户输入新值替换原值。

   对标志寄存器f的显示和修改较为特殊,显示格式为:

标志位名称

状态

标志位名称

状态

标志=1

标志=0

标志=1

标志=0

溢出标志OF

OV

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1