汇编语言与接口技术习题解答.docx

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

汇编语言与接口技术习题解答.docx

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

汇编语言与接口技术习题解答.docx

汇编语言与接口技术习题解答

习题一解答:

1.3

(1)[0.0000]原=0.0000[0.0000]反=0.0000[0.0000]补=0.0000

(2)[0.1001]原=0.1001[0.1001]反=0.1001[0.1001]补=0.1001

(3)[-1001]原=11001[-1001]反=10110[-1001]补=10111

1.4[N]反=1.0101[N]原=1.1010[N]补=1.0110N=-0.1010

1.5

(1)原码运算:

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

反码运算:

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

+[100110011]反=001010011+111001100=000100000

补码运算:

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

+[100110011]补=001010011+111001101=000100000

(2)原码运算:

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

反码运算:

0.100100-0.110010=0.100100+[1.110010]反=0.100100+

1.001101=1.110001

补码运算:

0.100100-0.110010=0.100100+[1.110010]补=0.100100+

1.001110=1.110010

1.6

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

(1)BCD

(2)(456)10=(0)BCD

(3)(174)8=(124)10=(0)BCD

(4)(2DA)16=(730)10=(0)BCD

1.7

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

-26506

(2)9876H看成无符号数时,转换为十进制数是:

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]补=[S1]补+[-S2]补=01100100+11100010=01000110,无溢出

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

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

习题二解答:

2.1答:

8086有哪些寄存器组?

各有什么用途?

①通用寄存器AX、BX、CX、DX

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

AX称累加器。

常用于存放算术逻辑运算中的操作数,所有I/O指令都使用累加器与外设接口传送数据;BX称基址寄存器。

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

CX称计数寄存器。

在循环和串操作指令中用作计数器,指令执行后CX寄存器中的容会自动改变。

DX称数据寄存器。

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

②4个专用寄存器

SP堆栈指针寄存器。

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

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

它们常常用在变址寻址方式中。

③4个段寄存器

CS代码段寄存器。

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

存放当前程序所用数据段的段基址;SS堆栈段寄存器。

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

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

④指令指针寄存器IP

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

⑤标志寄存器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位后,再加上有效偏移量地址。

物理地址=CS×4+IP=40000H+2200H=42200H

2.5答:

8086CPU为了能够对存储器进行字节和字的访问,在技术上将1M字节的存储器空间分成两个512K字节(219)的存储体。

一个存储体中包含偶数地址,该存储体被称为偶存储体;另一个存储体中包含奇数地址,该存储体被称为奇存储体,两个存储体之间采用交叉编址方式,然后通过A0和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)相对基址变址寻址

(6)寄存器寻址

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=0FFF0H

3.15答:

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

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

3.16答:

(1)XORAL,2AH

(2)MOVBL,AL

NOTBL

TESTBL,2AH

JEL1

MOVAL,0

.

.

L1:

MOVAL,1

(3)MOVCL,4

ROLAL,CL

ROLBL,CL

XCHGAL,BL

(4)PUSHF

POPAX

(5)PUSHF

POPAX

ANDAX,0FEFFH

PUSHAX

POPF

(6)略

(7)STD

MOVAX,DS

MOVES,AX

MOVSI,0163H

MOVDI,01B3H

MOVCX,100

REPMOVSB

(8)MOVAL,A

IMULB

MOVC,AL

MOVC+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(即第四个字符’O’所对应的ASIC码)

4.6答:

分别为:

3CH,1EH,0FH

4.9答:

(1)(AX)=1234H

(2)(AX)=5678H

(3)(AX)=5678H

4.10答:

DATASEGMENT

ARRAYEQUTHISWORD

ARRAYDB100DUP(?

DATAENDS

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,NUM的容为:

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)对BUF的容清0,遇到BUF的容为0FF则停止清0。

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

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

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

5.13答:

判断DAT如果为0,则将AL放到RES中;如果为正,将DAT的值加1,如果为负,将DAT的值减1,放到RES中。

5.14答:

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

(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

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,X

MOVBX,Y

ADDAX,BX

MOVBX,Z

SUBAX,BX

MOVDAT+6,AX

MOVAH,4CH

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:

DATA,CS:

CODE,SS:

STACK

START:

MOVBL,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

DISPLAY:

MOVAH,2

INT21H

MOVAH,4CH

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

Repstosb

endm

6.11答:

Str=”String”

Rept10

Dbstr

endm

6.12答:

Movemacrox

Ifidn,<555>

Movterminal,0

Else

Movterminal,1

Endif

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模式相同寄存器集的特权模式,但是运行的是特权级的操作系统任务。

ARM处理器工作状态:

1)ARM状态:

处理器执行32位的字对齐的ARM指令;

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

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

2)Thumb状态:

处理器执行16位的半字对齐的Thumb指令。

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

此外,在处理器进行异常处理时,把PC指针放入异常模式寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。

ARM指令集和Thumb指令集各有其优点,若对系统的性能有较高要求,应使用32位的存储系统和ARM指令集,若对系统的成本及功耗有较高要求,则应使用16位的存储系统和Thumb指令集。

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

7.2答:

ARM7TDM后缀TDMI的含义如下:

M:

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

T:

表示支持Thumb指令集;

I:

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

D:

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

7.3答:

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

7.4答:

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

 

习题八解答:

8.1答:

ARM异常中断

异常中断名称

含义

复位(Reset)

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

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

系统加电时、系统复位时、各种不同的ARM处理器的复位有一些区别的,具体的参见后面的实例中的描述

未定义的指令

Undefinedinstruction

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

软件中断SoftwareInterruptSWI

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

数据访问中止

DataAbort

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

外部中断请求

IRQ

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

快速中断请求

FIQ

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

8.2答:

.section.rodata

.align3

.LC0:

.ascii"%d\000"

.align3

.LC1:

.ascii"%c\000"

.align3

.LC2:

.ascii"%s\000"

.text

.align2

.globalmain

.typemain,%function

main:

movip,sp

stmfdsp!

{fp,ip,lr,pc}

subfp,ip,#4

subsp,sp,#16

ldrr0,.L2

ldrr1,[fp,#-16]

blprintf

ldrbr3,[fp,#-17]zero_extendqisi2

ldrr0,.L2+4

movr1,r3

blprintf

subr3,fp,#28

ldrr0,.L2+8

movr1,r3

blprintf

movr0,r3

ldmeafp,{fp,sp,pc}

.L3:

.align2

.L2:

.word.LC0

.word.LC1

.word.LC2

.sizemain,.-main

8.3答:

PXA270处理器提供了一个实时时钟模块RTC,RTC模块提供了如下的功能:

●Timer计数器功能;

●Wristwatch手表功能;

●Stopwatch秒表计时功能;

●Periodicinterrupt周期中断;

●Trimmer调整RTC时钟频率。

PXA270采用32.768kHz晶振来驱动RTC模块。

但是这个晶振在硬件复位后是被屏蔽的,系统使用13MHz晶振作为时钟源。

因此需要软件来设置寄存器,使这个晶振工作。

8.4答:

MMU的实现过程,实际上就是一个查表映射的过程。

建立页表(translatetable)是实现MMU功能不可缺少的一步。

页表是位于系统的存中,

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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