汇编语言与接口技术叶继华第二版习题答案.docx

上传人:b****5 文档编号:8349962 上传时间:2023-01-30 格式:DOCX 页数:23 大小:63.67KB
下载 相关 举报
汇编语言与接口技术叶继华第二版习题答案.docx_第1页
第1页 / 共23页
汇编语言与接口技术叶继华第二版习题答案.docx_第2页
第2页 / 共23页
汇编语言与接口技术叶继华第二版习题答案.docx_第3页
第3页 / 共23页
汇编语言与接口技术叶继华第二版习题答案.docx_第4页
第4页 / 共23页
汇编语言与接口技术叶继华第二版习题答案.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

汇编语言与接口技术叶继华第二版习题答案.docx

《汇编语言与接口技术叶继华第二版习题答案.docx》由会员分享,可在线阅读,更多相关《汇编语言与接口技术叶继华第二版习题答案.docx(23页珍藏版)》请在冰豆网上搜索。

汇编语言与接口技术叶继华第二版习题答案.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)原码运算:

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

01010011-00110011=[01010011]原-[00110011]原=00100000

反码运算:

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

=001010011+111001100=000011111

补码运算:

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

=001010011+111001101=000100000

(2)原码运算:

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

0.100100-0.110010=[0.110010]原-[0.100100]原=-0.001110

反码运算:

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

=0.100100+1.001101=1.110001

补码运算:

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

=0.100100+1.001110=1.110010

1.6

(1)(11011011)2=(1×27+1×26+1×24+1×23+1×21+1×20)10=(219)10=(001000011001)BCD

(2)(456)10=(010001010110)BCD

(3)(174)8=(1×82+7×81+4×80)10=(124)10=(000100100100)BCD

(4)(2DA)16=(2×162+13×161+10×160)10=(730)10=(011100110000)BCD

1.7

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

-26506

9876H=1001100001110110B为负数的补码,对其求补得到正数的补码,即

[1001100001110110B]补=0110011110001010B

=(1×214+1×213+1×210+1×29+1×28+1×27+1×23+1×21)10

=26506所以原负数为-26506

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

39030

9876H=1001100001110110B=(1×215+1×212+1×211+1×26+1×25+1×24+1×22+1×21)10

=39030

1.8

(1)98的压缩BCD码为:

10011000B

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

0000100100001000B

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×16+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=10110H

(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.11答:

(1)MOVAL,1234H

(2)MOVCS,AX

(3)MOV[1000],1000H

(4)MOVBYTEPTR[BX],1000H

(5)PUSHAL

(6)INAX,[BX]

(7)SHLAX,5

(8)XCHGDS,AX

(9)XCHG[BX],[SI]

(10)DEC[SI]

(11)NEG1234H

(12)MUL05H

(13)DIVAX,BX

(14)LEAAX,0100H

(15)AND[BX],[SI]

类型不匹配

代码段寄存器不能赋值

类型不匹配,目的操作数未指明数据类型

类型不匹配

类型不匹配

源操作数为0~255

移位大于1时,应放入CL中

不能为段寄存器

两个操作数不能同时为MEM

未指明操作数的数据类型

操作数不能是立即数

操作数应为REG或MEM

单操作数,且操作数应为REG或MEM

源操作数为MEM

两个操作数不能同时为MEM

3.14答:

指令

AX

CF

OF

ZF

SF

MOVAX,0

0000H

不影响

不影响

不影响

不影响

DECAX

0FFFFH

不影响

0

0

1

NOTAX

0000H

不影响

不影响(0)

不影响(0)

不影响

(1)

ANDAX,0FFFFH

0000H

0

0

1

0

CMPAX,0FFFFH

0000H

1

0

0

0

SUBAX,1200H

0EE00H

1

0

0

1

MOVCX,5

0EE00H

不影响

(1)

不影响(0)

不影响(0)

不影响

(1)

SARAX,1

0F700H

1

0

0

1

SARAX,CL

0FFB8H

0

不确定

0

1

ADDAX,0FFFFH

0FFB7H

1

0

0

1

NEGAX(0-(AX))

0049H

1

0

0

0

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;设置TF=D8=0

PUSHAX

POPF

(6)MOVCL,4

MOVBX,DX

SHLBX,CL

SHRDX,CL

SHRAX,CL

ORAH,BL

(7)STD

MOVAX,DS

MOVES,AX

MOVSI,0163H

MOVDI,01B3H

MOVCX,100

REPMOVSB

 

(8)MOVAL,BYTEPTRA

IMULBYTEPTRB;(AX)←A*B

MOVBYTEPTRC,AL

MOVBYTEPTRC+1,AH

习题四解答:

4.1答:

指令语句:

执行语句,产生机器代码。

伪指令语句:

不可执行语句,完成数据定义、内存分配等功能。

4.2答:

1).标号的属性(标号是一条指令语句的符号地址。

标号在汇编源程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。

标号可作为转移类指令的操作数,即转移地址。

(1).段属性:

标号所在段的段基址(通常在CS段)。

(2).偏移地址属性:

标号所在地址与段基址的偏移量值。

(3).类型属性:

指段内操作(NEAR类型)或段间操作(FAR类型)。

2).变量的属性(发生变化的量称变量。

变量经常在操作数字段中出现,在代码段之外的段中定义。

变量是一个存放数据的存储单元的名字(符号地址)。

也可以定义一个数据区或存储区,但变量仅表示该数据区或存储区的第一个单元(首地址)。

(1).段属性:

变量所在的段的段基址,通常在DS、ES中。

(2).偏移地址属性:

从段基址到定义变量位置之间的字节数,是16位的无符号数。

(3).类型属性:

变量所具有的字节数。

如:

BYTE(单字节长度)、WORD(双字节长度)、DWORD(4

字节长度)、DQ(8字节长度)、DT(10字节长度),表示该变量所代表的存储单元所能

存放的数据的长度。

4.3答:

(1)X变量的定义。

(2)X符号常量的定义。

4.4答:

A

01H

02H

03H

04H

B

31H

32H

33H

34H

C

01H

00H

02H

00H

03H

00H

04H

00H

E

34H

12H

00H

00H

4.5答:

(1)STR1的偏移地址为:

100H

(2)NUM为10(因为$=10AH,所以$-STR1=10AH-100H=0AH=10)

(3)STR2+3的存储单元内容为4FH(即第四个字符’O’所对应的ASCII码)

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

DB10DUP(?

DATA1ENDS

4.12答:

(1)POPSTAK

(2)LESSI,DVAR

(3)MOVAX,TYPEVAR

(4)MOVAX,OFFSETVSTR/LEAAX,VSTR

4.13答:

(1)VARDW5050/MOVWORDPTRVAR,5050

4.14答:

(1)LEABX,DAT1/MOVBX,OFFSETDAT1

(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

1

DAT1

2

3

‘1’

‘2’

‘3’

--

34H

DAT2

12H

34

12

12H

00H

--

BUF1

--

:

:

--

--

BUF2

:

:

4.15答:

LEASI,STR

MOVDH,[SI]

MOVDL,[SI+6]

或者:

MOVDH,STR

MOVDL,STR+6

习题五解答:

5.1简述汇编语言程序设计的基本步骤

答:

(1)分析问题,抽象出描述问题的数学模型

(2)确定解决问题的算法或解题思想

(3)绘制流程图和结构图

(4)分配存储空间和工作单元

(5)根据流程图编制程序

(6)程序静态检查

(7)上机调试

5.2程序的基本结构分为哪几种?

答:

3种结构:

顺序结构、分支结构、循环结构

5.3简述分支程序结构的特点?

答:

运行方向是向前的,在某一种确定的条件下,只能执行多个分支中的一个分支。

5.4简述循环程序结构的特点、循环控制的方法。

答:

(1)循环程序结构是重复执行某一程序段,直到满足某个条件或达到重复的次数为止。

(2)循环结构分为:

直到型循环(do_until)和当型循环(do_while)(循环次数可以为0)。

循环控制的方法

1.计数控制法

⏹计数控制法适用于循环次数已知的循环程序设计,每执行一次循环,计数器变化一次(加1或是减1),然后和循环计数结束条件进行比较,以决定是否继续循环。

通常用LOOP指令实现。

2.条件控制法

⏹条件控制法适用于循环次数不能预先确定的循环程序设计,程序运行时,通过测试特定的条件来实现对循环的控制,通常用比较指令和条件转移指令配合来实现。

5.5简述主程序与子程序的参数传递方法。

答:

(1)约定寄存器法

⏹主程序把子程序所需要的入口参数预先存放在指定寄存器中,进入子程序后,子程序直接对这些寄存器内容进行处理,并把处理结果存放在指定的寄存器中,作为返回到主程序的参数。

适合参数少的情况。

(2)约定存储单元法

⏹利用预先定义的内存空间存放入口参数或出口参数,主程序将入口参数存放在预定的内存空间中,进入子程序后,子程序到预定的内存空间中取出参数进行处理,并把处理结果存放在预定的内存空间中,作为返回到主程序的参数。

适合参数多的情况。

(3)堆栈法

⏹主程序在调用子程序之前先将入口参数压入堆栈,进入子程序之后,使用出栈指令弹出参数进行处理,子程序处理完毕后将结果压入堆栈,返回主程序后,在主程序中使用出栈指令弹出子程序的处理结果。

注意避免与现场保护使用堆栈出现混乱情况。

5.6什么是递归子程序?

设计的关键是什么?

答:

(1)递归子程序:

一个子程序直接或间接地调用自己,这样的子程序称为递归子程序。

(2)设计的关键:

递归调用一定要有递归结束的条件,在满足递归结束条件时,必须有一条转移指令实现嵌套的退出,保证能按反向次序退出并返回主程序。

5.7答:

(1)将一字节数据按位取反,然后与其本身进行逻辑乘,即清0作用;

(2)AL的内容为:

89H,NUM的内容为:

00H。

5.8答:

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

(2)DAT+1的内容为51H

5.9答:

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

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

5.10答:

(AL)=0D4H

5.11答:

(1)双字相加,低位字相加结果放置DAT3中,高位字相加结果放置DAT4中,;

(2)两个压缩的BCD码:

4649H与2758H相减,结果放置DX中。

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)求DAT存储单元中前10个字节数据之和(不考虑进位/溢出),结果放到预留的空间RES中。

(2)将DAT存储单元中前10个字节数据扩展成字,然后求和(不考虑进位/溢出),结果放到预留的空间RES中。

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

(4)(DX)=1×1+2×2+…+10×10。

(5)统计AX中1的个数,存放在BL中。

5.15答:

功能:

将DAT1存储单元中的字符串反向传送到DAT2存储单元中,所以,DAT2的前5个单元的内容是‘98765’。

5.16答:

(1)MOVAX,WORDPTR[DAT1+2]

(2)SUBAX,WORDPTRDAT1

MOVWORDPTRDAT3,AX

(3)MOVAX,WORDPTRDAT2

ADDAX,WORDPTR[DAT2+2]

MOVWORDPTR[DAT3+2],AX

 

5.17答:

DATASEGMENT

DATDW100,200,150,6DUP(?

;XDW100

;YDW200

;ZDW150

DATAENDS

STACKSEGMENTSTACK

DW200DUP(0)

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,WORDPTRDAT

MOVBX,WORDPTR[DAT+2]

ADDAX,BX

MOVBX,WORDPTR[DAT+3]

SUBAX,BX

MOVWORDPTR[DAT+6],AX

MOVAH,4CH

INT21H

CODEENDS

END

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

当前位置:首页 > 初中教育

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

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