汇编教程课件上文档格式.docx

上传人:b****3 文档编号:7873784 上传时间:2023-05-09 格式:DOCX 页数:86 大小:48.78KB
下载 相关 举报
汇编教程课件上文档格式.docx_第1页
第1页 / 共86页
汇编教程课件上文档格式.docx_第2页
第2页 / 共86页
汇编教程课件上文档格式.docx_第3页
第3页 / 共86页
汇编教程课件上文档格式.docx_第4页
第4页 / 共86页
汇编教程课件上文档格式.docx_第5页
第5页 / 共86页
汇编教程课件上文档格式.docx_第6页
第6页 / 共86页
汇编教程课件上文档格式.docx_第7页
第7页 / 共86页
汇编教程课件上文档格式.docx_第8页
第8页 / 共86页
汇编教程课件上文档格式.docx_第9页
第9页 / 共86页
汇编教程课件上文档格式.docx_第10页
第10页 / 共86页
汇编教程课件上文档格式.docx_第11页
第11页 / 共86页
汇编教程课件上文档格式.docx_第12页
第12页 / 共86页
汇编教程课件上文档格式.docx_第13页
第13页 / 共86页
汇编教程课件上文档格式.docx_第14页
第14页 / 共86页
汇编教程课件上文档格式.docx_第15页
第15页 / 共86页
汇编教程课件上文档格式.docx_第16页
第16页 / 共86页
汇编教程课件上文档格式.docx_第17页
第17页 / 共86页
汇编教程课件上文档格式.docx_第18页
第18页 / 共86页
汇编教程课件上文档格式.docx_第19页
第19页 / 共86页
汇编教程课件上文档格式.docx_第20页
第20页 / 共86页
亲,该文档总共86页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编教程课件上文档格式.docx

《汇编教程课件上文档格式.docx》由会员分享,可在线阅读,更多相关《汇编教程课件上文档格式.docx(86页珍藏版)》请在冰点文库上搜索。

汇编教程课件上文档格式.docx

102+2×

101+3×

100+6×

10-1

各位权值10k

二进制数:

101101(B)=1×

25+1×

23+1×

22+1×

20=45(D)

各位权值2k

十六进制数:

5F(H)=5×

161+15×

160(D)

各位权值16k

1.2.2二进制数、十进制数和十六进制数转换

(1)二进制数转换为十进制数(按权展开)

1101.1(B)=23+22+20+2-1=8+4+1+0.5=13.5(D)

(2)十进制数转换为二进制数

.降幂法:

(适用于数值不大的数)

13.5(d)=8+4+1+0.5=1101.1

1000

0100

0001

+0.1

1101.1

★对于小数有:

例1.2:

N=0.8125D(降幂法)

2-12-22-32-4

0.50.250.1250.0625

计算过程:

0.8125-0.5=0.3125(b1=1)

0.3125-0.25=0.0625(b2=1)

0.0625-0.125<

0(b3=0)

0.0625-0.0625=0(b4=1)

N=0.8125D=0.1101B

例1.4:

N=0.8125D(乘2取整法)

0.8125×

21.625

0.625×

21.25

0.25×

20.5

0.5×

21.0

1.8125D=0.1101B

★对于整数有:

除法:

(除2取余法,对整数而言)

N=13除2即二进制数去掉最右一位

13/2=6余1(余1表明N是奇数,得到一位)

6/2=3余0商为6即可写出110

3/2=1余1

1/2=0余1

13(d)=1101(b)

1011B=11D

1101B=13D

1.1.3十六进制数与二进制数和十进制数转换

(1)十六进制数与二进制数转换

每四位二进制数表示一位十六进制数

例:

001101011011111135BF

即0011010110111111(B)=35BF(H)

(2)十六进制数与十进制数转换

方法同二进制数与十进制数转换,不过是基数为十六进制数所对应的权。

35BF(H)=0011010110111111(B)

(3)常见几种进制数码表

二进制

八进制

十进制

十六进制

0000

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

10

8

1001

11

9

1010

12

A

1011

13

B

1100

14

C

1101

15

D

1110

16

E

1111

17

F

1.2.2二进制数和十六进制数运算

1.2.2.1二进制运算

加法规则:

0+0=01+0=10+1=11+1=0(进位1)

乘法规则:

0=01×

0=00×

1=01×

1=1

1.2.2十六进制数运算

原则:

逢十六进一

43A55A342A34

+5A34-34A5×

0025

9DD9258FD304

+5468

61984

1.3计算机中数和字符的表示

1.3.1数的补码表示

定义:

(X>

=0时)[X]补=符号+|X|------

(1)

(X<

0时)[X]补=2n-|X|=(2n-1-|X|)+1---

(2)

|X|=2n-[X]补=(2n-1-[X]补)+1(X<

0)---(3)

(2)+(3)即X<

0时:

[X]补+|X|=2^n

数的补码具体操作是:

反码+1,符号扩展

1.3.2补码的加减法(见教材P6-7)

由上面式

(2),(3)得到式(4):

[X]补求补[-X]补求补[X]补---(4)

[X+Y]补=[X]补+[Y]补--(5)

[X-Y]补=[X]补+[-Y]补--(6)

(6)式的Y<

0时即为(5)式,仅需考察(6)式且可认为X>

0,Y>

0:

1)如果[X-Y]>

=0,由定义应有[X-Y]补=X-Y,

则(6)式右边=X+(2^n-Y)=X-Y+2^n=X-Y(2^n为多余)

2)如果[X-Y]<

0,(或者说Y>

X),

应有[X-Y]补=2^n-|X-Y|=2^n-(Y-X)=2^n-Y+X=[-Y]补+[X]补

(computer)

1.3.3无符号数

1.3.4字符表示

见教材P:

8表1.1“ASCII码”

*2A+2B-2D

/2FLF0ACROD

1.4几种基本逻辑运算

AND,OR,NOT,XOR

AND

OR

NOTA

XOR

1.3计算机组织

2.1计算机系统概述

硬件:

存储器

大容量

接口

总线控制

逻辑

中央处理机CPU

……

I/O设备

计算机结构

.中央处理机CPU

.存储器memory

RAM(RandomAcceseMemory),ROM(ReadOnly),

EPROM(写几百~几千次),闪存(一种高速EPROM,可写几千次)

.输入输出子系统I/O

系统总线:

数据线,地址线,控制线

CPU的发展:

8088(准16位机)

8086:

16位机,16位通用寄存器,20位地址线,1M寻址.

80286(准32位机)

80386:

32位机,32位通用寄存器,32位地址线,4G寻址(理论).

80486

80586:

1993,字长32位,主频60-166M,数据总线64,地址总线32,寻址4G

80686(PRO)

PⅡ:

1997,字长32位,主频-333M,数据总线64,地址总线32,寻址4G

PⅢ:

1999,字长32位,主频-600M,数据总线64,地址总线36,寻址64G

PⅣ:

软件:

系统软件

应用软件

操作系统

系常驻监督程序

件文I/O调文翻连装系

件驱试本译接入统

管动程编程程程程

理程序辑序序序序

程序程库

序序

软用户程序用户程序库

****************************************************************************************************

2.2中央处理机CPU

2.2.1CPU的组成

算术逻辑部件、控制逻辑、工作寄存器

2.2.280X86寄存器组

寄存器分为可见和不可见311615870

///////////////////////

AH

AL

BH

BL

CH

CL

DH

DL

SP

BP

DI

SI

1、.通用数据寄存器EAX

AX=AHAL累加器EBX

BX=BHBL基址变址ECX

CX=CHCL计数EDX

DX=DHDL数据

.指针及变址寄存器

SP堆栈指针

BP基址指针

DI目的变址(自动增1/减1)

SI源变址(自动增1/减1)

2、专用寄存器

IP

FLAGS

IP指令指针

FLAGS标志

标志寄存器FLAGS

1514131211109876543210

NT

IO

PL

OF

DF

IF

TF

SF

ZF

AF

PF

CF

.程序状态字寄存器

PSW

表2.1PSW标志位的符号表示

标志名

flag=1

flag=0

OF溢出(是/否)

OV

NV

第四章DF方向(增/减)

DN

UP

第四章IF中断(允许/关闭)

EI

第四章SF符号(负/正)

NG

ZF零(是/否)

ZR

NZ

AF辅助进位(是/否)

AC

NA

PF奇偶(偶/奇)

PE

PO

CF进位(是/否)

CY

NC

3、段寄存器

CS

DS

ES

SS

////////FS///////

////////GS////////

CS代码

DS数据

ES附加

SS堆栈

.?

段寄存器是16位寄存器,用什么

办法提供20位地址.

220=1KK=1M(兆)

段寄存器主要用于存储器寻址,用来直接或间接地存放段地址。

是解决1M地址的寻址问题。

*8088/8086只能工作在实模式(实模式寻址1M)

150存储器

段地址

所选存储单元

段地址

偏移地址

偏移地址

+

*除段寄存器外,286以上,还可见32位,前加E,如EAX,ESP,EDI。

2.3存储器

存储器分内存和外存,这里指内存,外存指硬盘等。

存储器按作用分:

RAM,ROM(C000~FFFF),Cache(缓冲CPU与

低速的RAM)

2.3.1存储单元的地址和内容

位、字节、字

BIT:

0/1

BYTE:

8BIT

WORD:

2BYTE

单字、双字、四字

70

(1)字节

N地址

158

(2)字N+1N地址

31高位字16

15低位字0

(3)双字N+3N+2N+1N地址

63高位双字32

31低位双字0

(4)四字N+7N+6N+5N+4N+3N+2N+1N地址

.存储单元以字节为最基本单位存储信息.

.存储单元的地址从0开始编号,机器中地址以二进制数表示,无符号数,书写用十六进制.

字长16位表示地址,可表示多少字节单元.

210=1024=1K

216=65536=64K0---65535

地址编号十六进制:

0---FFFFH

.一个存储单元中存放的信息称为该存储单元的内容。

(0004)=78H字节单元

(0005)=56H字节单元

(0004)=5678H字单元,高位在高地址。

(0004)=12345678H双字单元,高位在高地址。

地址

低址

内容

0004H

78H

0005H

56H

0006H

34H

0007H

12H

2.3.2实模式存储器寻址

用什么办法提供20位地址.

16位段地址0000

000016位偏移地址

20位物理地址

16dx段地址+偏移地址=物理地址

代码段CS

数据段DS

堆栈段SS

附加段ES

*8088/8086只能工作在实模式(实模式寻址1M),其他可实模式/保护模式。

保护模式:

支持多任务处理,扩大寻址范围。

支持虚拟存储(把外存看作内存),

程序员编程无内存限制。

15,031,0内存

单元

选择器

所选段最大

4GB

地址转换

段基地址物理地址

选择器放在段寄存器中,但不直接表示段基地址,由操作系统完成转换。

2.4外部设备

.主机通过I/O接口与外设交换数据的。

每个I/O

接口电路中都有如下

三个寄存器:

数据寄存器

状态寄存器

命令寄存器

.端口PORT16位二进制代码0000--FFFFH

.通过调用例行程序进行

BIOSBasicInput/OutputSystem

(存在ROM中)

DOSDiskOperatingSystem

(存在磁盘中,完成比BIOS更高的功能)

第二章汇编语言程序实例及上机操作

2.1汇编语言程序实例

例2.1编写从键盘输入单个字符,并将该字符的下一个字符显示输出的程序。

codesegment

assumecs:

code

start:

movah,1

int21h

movdl,al

adddl,1

movah,2

movah,4ch

codeends

endstart

键入A接着显示B,键入K接着显示L

例2.2编写显示“HELLO,WORLD!

”的程序。

datasegment

Stringdb‘HELLO,WORLD!

$’

dataends

codesegment

code,ds:

data

movax,data

movds,ax

movdx,offsetstring

movah,9

显示HELLO,WORLD!

详见教材P31表2.1

2.2建立汇编语言的工作环境

2.2.1为运行汇编语言程序至少要在磁盘上建立以下文件:

1、编辑程序EDIT.EXE

2、汇编程序MASM.EXE

3、连接程序LINK.EXE

4、调试程序DEBUG.EXE

必要时还需建立CREF.EXE等文件

2.2.2建立ASM文件

在DOS的提示符下,输入EXE文件的文件名。

如:

C>EDIT↓

C>EDIT文件名.ASM↓例如文件名为LI21.ASM

C>

在EDIT程序中,将我们编写的汇编程序输入到计算机中,并将LI21.ASM保存ASM源程序。

然后退出EDIT程序,回到DOS状态。

2.2.3用MASM程序产生OBJ文件

源程序建立后,就要用汇编程序对源文件汇编,汇编后产生二进制的目标文件(OBJ文件),其操作与汇编程序回答如下:

C>MASMLI21.ASM↓

Microsoft(R)MacroAssmblerVersion6.0

Copyright(C)MicrosoftCorp1981-1985,1987,Allrightsreserved

Objectfilename[LI21.OBJ]:

Sourcelisting[NUL.LST]:

LI21

Cross-reference[NUL.CRF]:

51646+447778Bytessymbolspacefree

0WarningErrors

0SevereErrors

li21.OBJ目标文件,这是汇编的主要目的

li21.LST列表文件,可有可无

li21.CRF交叉引用表,可有可无

0WarningErrors警告错误宏指令

0SevereErrors严重错误

2.2.4用LINK程序产生EXE文件

汇编程序已产生出二进制的目标文件(OBJ),但OBJ文件并不是执行文件,还必须用连接程序(LINK)把OBJ文件转换为可执行的EXE文件。

当然,如果一程序由多个模块组成时,也应该通过LINK把它们连接在一起。

操作如下:

C>LINKLI21.OBJ↓

Microsoft(R)MacroAssmblerVersion5.0

Runfile[LI21.ASM.EXE]:

ListFile[NUL.MAP]:

ex_movs

Libraries[.LIB]:

LINK:

WarningL4012:

nostacksegment

两个输入文件两个输出文件

OBJ文件EXE文件

LIB文件MAP文件

2.2.5运行程序或称程序的执行

在建立了EXE文件后,就可以直接在DOS的提示符下,输入EXE文件的文件名。

C>LI21↓

2.2.6介绍COM文件

COM文件也是一种可执行的程序。

EXE文件也是一种可执行的程序。

2.3DEBUG主要命令

C>DEBUG↓

C>DEBUG<要调试的程序>↓

DEBUG的主要命令

-D显示内存内容

格式1:

D地址

从指定的地址开始,显示40H字或80H字节

格式2:

D范围

显示指定范围的内容

-E修改内存单元内容

E地址内容表

用给定的内容表去代替指定范围的内存单元的内容

E地址

可连续逐个修改内存单元的内容。

按CR键结束E命令

-R检查和修改寄存器内容

R

将显示所有寄存器内容和全部标志的状态,

现行的CS:

IP所指的指令的机器码和反汇编符号

R寄存器名

可检查和修改寄存器内容,若不修改其内容,则按CR键;

若要修改,可输入修改后的1~4个16进制字符值,再按CR键。

格式3:

RF

显示标志和修改标志位状态。

-G运行命令

格式:

G[=地址][地址]…[地址]

该命令还可以在程序运行中设置断点。

1、第一个参数“=地址”规定了执行的起始地址,

2、以CS内容作段地址,以等号后面的地址值作为地址偏移量,

3、=不能省掉。

若省掉起始地址,则以CS:

IP作为起始地址。

4、后面的地址数是断点地址,最多可设置10个断点.

5、地址参数所指的单元,必须包含有有效的8088指令

6、堆栈必须至少包含有6个可用字节。

7、若断点地址只包含地址偏移量,则段地址在段寄存器CS中。

-T跟踪命令

T[=地址]

可以在指令执行中逐条进行跟踪,若省去地址,则从CS:

IP现行值执行。

T[=地址][值]

可对多条指令进行跟踪(在执行了由值所指定的若干条指令后,执行就停下来,并显示各寄存器的内容和标志位状态)。

-A汇编命令(输入程序)

若在调试目标程序的过程中,要改写或增补一段目标程序,则可以用A命令直接在DEBUG下实现。

A[地址]

该命令可以从指定的地址开始,将输入的汇编语言语句汇编成机器代码,连续存放在内存单元中。

若命令中未指定地址,且前面用过汇编命令A的话,则接着上一个汇编命令的最后一个单元开始存放;

若前面未用过汇编命令,则从CS:

0100H单元开始存放。

在程序完毕后,最后一行不输入内容,直接按回车CR,即可返回到DEBUG程序。

并可用反汇编命令U验证输入的程序是否正确。

-U反汇编命令

U地址

该命令从指定的地址开始,反汇编16个字节或32个字节,若省去指定地址,则以上一个U命令反汇编的最后一条指令的地址的下一个单元作为起始地址;

若没用过U命令,则以由DEBUG初始化的段寄存器值作为段地址,以100H作为地址偏移量。

U范围

对指定范围的内存单元进行反汇编,范围可以由起始地址、结束地址或起始地址及长度来确定。

-I输入命令

I端口地址

该命令从指定的端口输入一个字节并显示。

-O输出命令

O端口地址字节值

该命令能向指定的端口输出

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2