汇编语言与接口技术.docx

上传人:b****1 文档编号:14333385 上传时间:2023-06-22 格式:DOCX 页数:27 大小:31.67KB
下载 相关 举报
汇编语言与接口技术.docx_第1页
第1页 / 共27页
汇编语言与接口技术.docx_第2页
第2页 / 共27页
汇编语言与接口技术.docx_第3页
第3页 / 共27页
汇编语言与接口技术.docx_第4页
第4页 / 共27页
汇编语言与接口技术.docx_第5页
第5页 / 共27页
汇编语言与接口技术.docx_第6页
第6页 / 共27页
汇编语言与接口技术.docx_第7页
第7页 / 共27页
汇编语言与接口技术.docx_第8页
第8页 / 共27页
汇编语言与接口技术.docx_第9页
第9页 / 共27页
汇编语言与接口技术.docx_第10页
第10页 / 共27页
汇编语言与接口技术.docx_第11页
第11页 / 共27页
汇编语言与接口技术.docx_第12页
第12页 / 共27页
汇编语言与接口技术.docx_第13页
第13页 / 共27页
汇编语言与接口技术.docx_第14页
第14页 / 共27页
汇编语言与接口技术.docx_第15页
第15页 / 共27页
汇编语言与接口技术.docx_第16页
第16页 / 共27页
汇编语言与接口技术.docx_第17页
第17页 / 共27页
汇编语言与接口技术.docx_第18页
第18页 / 共27页
汇编语言与接口技术.docx_第19页
第19页 / 共27页
汇编语言与接口技术.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言与接口技术.docx

《汇编语言与接口技术.docx》由会员分享,可在线阅读,更多相关《汇编语言与接口技术.docx(27页珍藏版)》请在冰点文库上搜索。

汇编语言与接口技术.docx

汇编语言与接口技术

Studwt

ExueWaTlSludert

—BL」k*二《

J*eC-at

-ST

4CmVi甲A

nciudeindUM

制走覆世Isa补;«1工工实心■创•、wiiaaiTi-Mn

"-■>Jihbjdf:

"tMn、、7;

X\

r,

C4«皆0•

IUS*血匚■**UH禍”-科严产U**吕¥#巧1樺申,rpthT—It.旳4电BM'MiaA:

宀乎"//

//X

「•.用户茅谢验爭丿严;

■■■.

Regirfidr

 

 

习题一解答:

1.3

(1)

(2)

(3)

[0.0000]

[0.1001][-1001]

原=0.0000

原=0.1001

原=11001

[0.0000]

[0.1001]

[-1001]

反=0.0000

反=0.1001

反=10110

[0.0000]

[0.1001][-1001]

补=0.0000

补=0.1001

补=10111

1.4[N]

反=1.0101

补=1.0110N=-0.1010

1.5

(1)

原码运算:

[N]原=1.1010[N]

比较可知,正数较大,用正数减负数,结果为正

010101=[01010011]反+[-00110011]反=001010011

+[100110011]反=001010011+111001100=000100000

补码运算:

010101=[01010011]补+[-00110011]补=001010011

反码运算:

补=001010011+111001101=000100000

+[100110011]

原码运算:

比较可知,负数较大,用负数减正数,结果为负

反码运算:

0.100100-0.110010=0.100100+[1.110010]

1.001101=1.110001

反=0.100100+

补码运算:

0.100100-0.110010=0.100100+[1.110010]

1.001110=1.110010

补=0.100100+

1.6

(1)(11011011)2=(219)10=

(1)bcd

⑵(456)

10=(0)BCD

⑶(174)

8=(124)10=(0)BCD

⑷(2DA)

16=(730)10=(0)bcd

1.7

(1)9876H

(2)9876H

看成有符号数时,默认为负数的补码,转换为十进制数是:

-26506

看成无符号数时,转换为十进制数是:

39030

1.8

(1)98的压缩BCD码为:

10011000B

(2)98的非压缩BCD码为:

01000B

 

1.9

(1)[S1+S2]#=[S1]补+[S2]补=00010110+00100001=00110111,无溢出

[S1-S2]#=[S1]补+[-S2]补=00010110+11011111=11110101,无溢出

(2)[S1+S2]#=[S1]补+[S2]补=00010110+11011111=11110101,无溢出

[S1-S2]#=[S1]补+[-S2]补=00010110+00100001=00110111,无溢出

(3)[S1+S2]#=[S1]补+[S2]补=01100100+00011110=10000010,有溢出

[S1-S2]补=目1]补+[-S2]补=01100100+11100010=01000110,无溢出

(4)[S1+S2]#=[S1]补+[S2]补=10011100+11100010=01111110,有溢出

[S1-S2]#=[S1]补+[-S2]补=10011100+00011110=10111010,无溢出

习题二解答:

2.1答:

8086有哪些寄存器组?

各有什么用途?

1通用寄存器AXBXCXDX

它既可用作16位寄存器,又可将它拆成高、低8位,分别作为两个独立的8位寄存器

使用。

AX称累加器。

常用于存放算术逻辑运算中的操作数,所有I/O指令都使用累加器与

外设接口传送数据;BX称基址寄存器。

常用来存放访问存时的基地址或用作间接寻址时的地址寄存器。

CX称计数寄存器。

在循环和串操作指令中用作计数器,指令执行后CX寄存器

中的容会自动改变。

DX称数据寄存器。

在I/O指令中用来存放端口的地址,在乘除指令中用作辅助寄存器。

24个专用寄存器

SP堆栈指针寄存器。

它在堆栈中存放栈顶偏移指针,;BP基址指针寄存器。

一般也用来存放访问存时的基地址;SI源变址寄存器,DI目的变址寄存器。

它们常常用在变址寻址方

式中。

34个段寄存器

CS代码段寄存器。

存放当前程序所在段的段基址;DS数据段寄存器。

存放当前程序所

用数据段的段基址;SS堆栈段寄存器。

存放当前程序所用堆栈段的段基址,ES附加段寄存

器。

存放当前程序所用辅助数据段的段基址。

4指令指针寄存器IP

16位的指令指针寄存器IP用于存放下一条执行指令的偏移地址。

5标志寄存器FR

它是16位寄存器,但只使用其中的9位,这9位包括6个状态标志位和3个控制标志

位。

状态标志记录了前面算术逻辑运算结果的一些特征;控制标志是用户自己通过指令设置

的,设置后将对其后的操作产生控制作用。

2.2答:

8086流水线技术是利用8086部指令队列,使8086/8088的执行部件和总线接口部件并行工作。

其工作过程如下:

当8086的指令队列中有两个空字节,或者8088的指令队列

中有一个空字节,总线接口部件就自动执行一次指令周期,从存中取出后续的指令代码放入

队列中。

当执行部件需要数据时,总线接口部件根据执行部件给出的地址,从指定的存单元

或外设中取出数据供执行部件使用。

当运算结束时,总线接口部件将运算结果送入指定的存

单元或外设。

当指令队列空时,执行部件等待,直到有指令为止。

若总线接口部件正在取指

令,执行部件此时正好发出访问总线的请求,则必须等总线接口部件取指令完毕后,该请求

才能得到响应。

一般情况下,程序按顺序执行,但当遇到跳转指令时,总线接口部件就使指

令队列复位,从新地址取出指令,并立即传给执行部件去执行。

所以,8086流水线技术减少了CPU为取指令而等待的时间,提高了CPU的利用率,加

快了整机的运行速度,也降低了对存储器存取速度的要求。

2.3答:

为了尽可能使8086/8088CPU适应各种使用场合,8086/8088CPU通常有两种工作模式:

最大工作模式和最小工作模式。

最小工作模式,就是在系统中只有8086或者8088一个微处理器。

在这种系统中,所有的控制信号直接由8086或8088产生,因此,系统中的总线控制逻辑电路被减到最少。

最大工作模式,是相对最小工作模式而言。

在此工作模式系统中,一般包含两个或两个

以上微处理器,但是主处理器只有一个,其他的处理器均为协处理器,协助主处理器工作。

2.4答:

逻辑地址是由段基址和偏移地址两部分构成,通常由编程人员在指令中使用。

8086

系统中任何一个存储单元对应20位的物理地址,都是由逻辑地址转换得来的。

8086存储器中的物理地址是由部总线接口部件BIU――地址加法器产生。

由地址加法器

把16位段寄存器的容转换为20位物理地址,即段基址左移4位后,再加上有效偏移量地址。

物理地址=CSX4+IP=40000H+2200H=42200H

2.5答:

8086CPU为了能够对存储器进行字节和字的访问,在技术上将1M字节的存储器空间

分成两个512K字节(219)的存储体。

一个存储体中包含偶数地址,该存储体被称为偶存储体;

另一个存储体中包含奇数地址,该存储体被称为奇存储体,两个存储体之间采用交叉编址方式,然后通过Ao和BHE组合就可以确定对哪一组存储体进行访问,是对字节还是对字进行访问。

2.6答:

在存储器中,对要存放的字,其低位字节可以从奇数地址开始存放,也可以从偶数地址中开始存放;如果从奇数地址开始存放称为非规则存放,按非规则存放的字称为字不对

准存放。

从偶数地址中开始存放称为规则存放,按规则存放的字称为字对准存放。

使用字对准存放要在一个总线周期完成,用字不对准存放则需要两个总线周期才能完成。

所以为了加快程序运行速度,编程时应尽可能使用字对准存放。

习题三解答:

3.6答:

(1)MOVCX,BX

(2)MOVAX,1234H

(3)MOVAX,wordptr[20H]

(4)MOVbyteptr[BX],20H

3.7答:

(1)EA=3000H

(2)EA=1200H

(3)EA=3300H

(4)EA=4200H

(5)EA=4500H

3.8答:

(1)立即数寻址

(2)直接寻址

(3)寄存器间接寻址

(4)基址变址寻址

(5)相对基址变址寻址

3.9答:

(1)段间接寻址

(2)段间接寻址

(3)段间间接寻址

3.10答:

(1)直接寻址PA=10200H

(2)寄存间接寻址PA=10010H

(3)跨段寄存器间接寻址PA=15010H

(4)跨段寄存器间接寻址PA=20010H

(5)寄存器间接寻址PA=200A0H

(6)寄存器相对址寻址PA=0110H

(7)基址变址寻址PA=10110H

(8)相对基址变址寻址PA=10210H

(9)寄存器间接寻址PA=10100H

3.12答:

解:

(1)AX=0100H

(2)AX=1020H

(3)AX=1020H

(4)AX=5030H

(5)AX=2010H

(6)AX=2010H

(7)AX=1020H

3.13答:

(1)SI=0320H

(2)BP=1320H

(3)DI=0310H

(4)X=OFFFOH

3.15答:

(1)测试AL中1、3、5位是否均为“1”

(2)对32位数(高位在DX,低位在AX求补码

3.16答:

(1)XOR\L,2AH

(2)MOVBL,AL

NOTBL

TESTBL,2AH

JEL1

MOVAL,0

L1:

MOVAL,1

(3)MOVCL,4ROLAL,CLROLBL,CL

XCHG

AL,BL

(4)

PUSHF

POP

AX

(5)

PUSHF

POP

AX

AND

AX,OFEFFH

PUSH

AX

POPF

(6)

(7)

STD

MOV

AX,DS

MOV

ES,AX

MOV

SI,0163H

MOV

DI,01B3H

MOV

CX,100

REP

MOVSB

(8)

MOV

AL,A

IMUL

B

MOV

C,AL

MOV

C+1,AH

习题四解答:

4.4答:

01H

02H

03H

04H

31H

32H

33H

34H

0001H

0002H

0003H

0004H

00001234H

4.5答:

(1)STR1的偏移地址为:

100H

(2)NUM为10

(3)STR2+3的存储单元容为79H(即第四个字符’0'所对应的ASIC码)

4.6答:

分别为:

3CH,1EH0FH

4.9答:

(1)(AX)=1234H

⑵(AX)=5678H

⑶(AX)=5678H

4.10

答:

DATA

SEGMENT

ARRAY

EQUTHISWORD

ARRAY

DATA

DB100DUP(?

ENDS

4.11答:

(1)ARRAYDB12H,34H,56H,0ABH

(2)DARRAYDW1234H,5678H,0ABCDH

(3)BCDDW1234

(4)STRDB'STRING

(5)DATA1SEGMENT

DB12H,34H,'A,'B','C'

DW1234H,5678H,0ABCDH

DB5DUP(?

DATA1ENDS

4.14答:

(1)LEABX,DATA1

(2)MOVCL,BYTEPTR[DAT2+2]

(3)MOVBYTEPTR[BUF1+9],11H

(4)LEN1=13,LEN2=7

(5)MOVCX,DAT2-DAT1

lEASI,DAT1

LEADI,BUF2

MOVAX,DS

MOVES,AX

CLD

REPMOVSB

4.15答:

LEASI,STR

MOVDH,[SI]

MOVDL,[SI+6]

MOVDH,STR

MOVDL,STR+7

习题五解答:

5.7答:

(1)将一字节数据和其补码逻辑乘;

(2)AL的容为:

89H,NUI的容为:

10H。

5.8答:

(1)求DAT的平方,并将结果放到DAT+1中。

(2)DAT+1的容为51H

5.9答:

(1)将DAT第0、2位清0,1、3、7位置1;

(2)程序执行后DAT的容为DAH

5.12答:

(1)对BU啲容清0,遇到BUFF容为OFF则停止清0。

(2)求BUF中的前10个数,结果放到A冲。

(3)求DAT中的前10个数,结果放入BUF

(4)从BLOC开始的100个字节查找第一个和KEYf等的元素,找到就将结果放到ADDR中,否则DI置0。

5.13答:

判断DA■如果为0,则将AL放到RES^;如果为正,将DAT勺值加1,如果为负,将DAT勺值减1,放到RESK

5.14答:

(1)求0到9的和,结果放到预留的空间RE种

(2)将AX置0

(3)求1到99的和结果放到AX中。

(4)求两个相邻数的积,结果与前面的数相加一起保存到DX中。

(5)AX的值顺序逻辑右移,每次移一位,,同时将BX的值加1,直到AX的值为0。

5.17答:

DATASEGMENT

DATDW6DUP⑺

XDW100

YDW200

ZDW150

DATAENDS

STACKSEGMENTSTACK

DW200DUP(0)

STACKENDS

CODESEGMENT

ASSUMECSCODEDS:

DATASS:

STACKSTARTMOVAX,DATA

MOVDS,AX

MOVAX,X

MOVBX,Y

ADDAX,BX

MOVBX,Z

SUBAX,BX

MOVDAT+6,AX

MOVAH4CH

INT21H

CODEENDS

ENDSTART

5.20答:

DATASEGMENT

DAT1DB?

DAT2DB?

DAT3DB?

DATAENDS

STACKSEGMENTSTACK

DB200DUP⑺

STACKENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAL,7BH

MOVBL,AL

ANDBL,07H

MOVDAT1,BL

MOVCL,3

SHRAL,CL

MOVBL,AL

ANDBL,07H

MOVDAT2,BL

MOVCL,2

SHRAL,CL

MOVDAT3,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5.21答:

DATASEGMENT

DAT1DW'A>B

DAT2DW'A

ADB200

BDB100

DATAENDS

STACKSEGMENTSTACK

DB100DUP(0)

STACKENDS

CODESEGMENT

ASSUMEDS:

DATA,SS:

STACK,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVAX,A

MOVBX,B

CMPAX,BX

JBNEXT

MOVDX,DAT2

MOVAH,9

INT21H

NEXT:

MOVDX,DAT1

MOVAH,9

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

5.26答:

DATASEGMENT

NUMBER1,2,3,4,5

TABLERA,B,C,D,E

DATAENDS

STACKSEGMENTSTACK

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMEDS:

DATACS:

CODESS:

STACK

STARTMOVBL,NUMBER

XORBH,BH

SHLBX,1

JUMTABLE[BX]

A:

MOVDL,'1'

JMPDISPLAY

B:

MOVDL,'2'

JMPDISPLAY

C:

MOVDL,'3'

JMPDISPLAY

D:

MOVDL,'4'

JMPDISPLAY

E:

MOVDL,'5'

JMPDISPLAY

DISPLAYMOVAH,2

INT21H

MOVAH4CH

INT21H

CODEENDS

ENDSTART

习题六解答:

6.9答:

Movemacroto,from,n

Leasi,from

Leadi,to

Movcx,n

Repmovsb

endm

6.10答:

Clrbmacron,cfil

Movcx,n

Moval,''

Leadl,cfil

Repstosbendm

6.11答:

Str=”String”

Rept10

Dbstr

endm

6.12答:

Movemacrox

Ifidn,<555>

Movterminal,0

Else

Movterminal,1Endif

Endm

6.13答:

Moval,divd

Ifesign

Movah,0

Divscale

Else

Cbw

Idivscale

Endif

Movresult,al

习题七解答:

7.1答:

ARM处理器有7个基本工作模式:

1)用户模式(User):

非特权模式,正常程序执行的模式,大部分任务执行在这种模式下;

2)快速中断模式(FIQ):

当一个高优先级(fast)中断产生时将会进入这种模式,用于高

速数据传输和通道处理;

3)外部中断模式(IRQ):

当一个低优先级(normal)中断产生时将会进入这种模式,用于

通常的中断处理;

4)管理模式(Supervisor):

当复位或软中断指令执行时将会进入这种模式,是一种供操作系统使用的一种保护模式;

5)数据访问中止模式(Abort):

当数据或指令存取异常时将会进入这种模式,用于虚拟存储及存储保护;

6)未定义模式(Undef):

当执行未定义指令时会进入这种模式,可用于支持硬件协处理器的软件仿真;

7)系统模式(System):

使用和User模式相同寄存器集的特权模式,但是运行的是特权

级的操作系统任务。

ARMh理器工作状态:

1)ARM犬态:

处理器执行32位的字对齐的ARM!

令;

当操作数寄存器的状态位(位0)为1时,可以采用执行BXt令的方法,使微处理器从ARM状态切换到Thumb犬态。

此外,当处理器处于Thumb犬态时发生异常(如IRQ、FIQ、Undef、Abort、SW等),则异常处理返回时,自动切换到Thumb犬态。

2)Thumb状态:

处理器执行16位的半字对齐的Thumb!

令。

当操作数寄存器的状态位为0时,执行BX旨令时可以使微处理器从Thumb犬态切换到ARM状态。

此外,在处理器进行异常处理时,把PC旨针放入异常模式寄存器中,并从异常向量地

址开始执行程序,也可以使处理器切换到ARM犬态。

ARM旨令集和Thumb旨令集各有其优点,

若对系统的性能有较高要求,应使用32位的存储系统和ARM旨令集,若对系统的成本及功耗

有较高要求,则应使用16位的存储系统和Thumb指令集。

当然,若两者结合使用,充分发挥其各自的优点,会取得更好的效果。

7.2答:

ARM7TD后缀TDMI的含义如下:

M表示嵌硬件乘法器(Multiplier);

T:

表示支持Thumb指令集;

I:

表示支持片上断点和调试点;D:

表示支持片上调试(Debug)。

7.3答:

ARh处理器将存储器看做是一个从0开始的线性递增的字节集合,指令和数据共用一条32位

总线。

7.4答:

当控制位I置位时,IRQ中断被禁止,否则允许IRQ中断使能;当控制位F置位时,FIQ中断被禁止,否则允许FIQ中断使能。

习题八解答:

8.1答:

ARM异常中断

异常中断名称

含义

复位(Reset)

当处理器复位引脚有效时,系统产生复位,程序跳转到复位异常中断处理程序处执行,复位异常中断的优先级是最高优先级的中断。

通常复位产生有下面几种情况:

系统加电时、系统复位时、各种不同的AR

处理器的复位有一些区别的,具体的参见后面的实例中的描述

未定义的指令

Undefined

nstruction

当ARM处理器或者系统中的协处理器认为当前指令未定义时,产生该中断,可以通过该异常中断仿真浮点向量运算

软件中断Software

InterruptSWI

这是由用户定义的中断指令,可用于用户模式下的程序调用特权操作指令

数据访问中止

DataAbort

数据访冋指令的目标地址不存在,或者该地址不允许当前指令访冋,处理器产生数据访问中止异常中断

外部中断请求

IRQ

当处理器的外部中断请求引脚有效,或者CPSR寄存器的1控制位被清除时,处理器产生外部中断请求,应用中对于IRQ的中断处理是比较关键的技术

快速中断请求

FIQ

当处理器的外部中断请求引脚有效,或者CPSR寄存器的F控制位被清楚时,处理器产生外部中断请求

8.2答:

.section.rodata

.align3

丄CO:

.ascii"%d\000"

.align3

丄C1:

.ascii"%c\000"

.align3

丄C2:

.ascii"%s\000"

.text

.align2

.globalmain

.typemain,%function

main:

movip,sp

stmfdsp!

{fp,ip,lr,pc}

subfp,ip,#4

subsp,sp,#16

ldrrO,.L2

Idrr1,[fp,#-16]

blprintf

Idrbr3,[fp,#-17]zero_extendqisi2

Idrr0,.L2+4

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

当前位置:首页 > 表格模板 > 合同协议

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

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