汇编语言 第二版 王爽 完整答案.docx

上传人:b****4 文档编号:3180873 上传时间:2022-11-19 格式:DOCX 页数:50 大小:129.03KB
下载 相关 举报
汇编语言 第二版 王爽 完整答案.docx_第1页
第1页 / 共50页
汇编语言 第二版 王爽 完整答案.docx_第2页
第2页 / 共50页
汇编语言 第二版 王爽 完整答案.docx_第3页
第3页 / 共50页
汇编语言 第二版 王爽 完整答案.docx_第4页
第4页 / 共50页
汇编语言 第二版 王爽 完整答案.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

汇编语言 第二版 王爽 完整答案.docx

《汇编语言 第二版 王爽 完整答案.docx》由会员分享,可在线阅读,更多相关《汇编语言 第二版 王爽 完整答案.docx(50页珍藏版)》请在冰豆网上搜索。

汇编语言 第二版 王爽 完整答案.docx

汇编语言第二版王爽完整答案

第1章基础知识

检测点1.1

(1)1个的寻址能力为8,那么它的地址总线的宽度为13。

(2)1的存储器有1024个存储单元。

存储单元的编号从0到1023。

(3)1的存储器可以存储1024*8个,1024个。

(4)1、1、1分别是2^30、2^20、2^10。

(n^m的意思是n的m次幂)

(5)8080、8088、80286、80386的地址总线宽度分别是16根、20根、24根、32根,则它们的寻址能力分别为:

64()、1()、16()、4()。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。

则它们一次可以传送的数据为:

1(B)、1(B)、2(B)、2(B)、4(B)。

(7)从内存中读取1024字节的数据,8086至少要读512次、80386至少要读256次。

(8)在存储器中,数据和程序以二进制形式存放。

第2章寄存器答案

检测点2.1

(1)写出每条汇编指令执行后相关寄存器中的值。

626274A3H

31H31A3H

23H3123H

6246H

826826

6246H

826

04D8H

0482H

6C82H

882H

6888H

810H

6246H

(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。

解:

2

检测点2.2

(1)给定段地址为0001H,仅通过变化偏移地址寻址,的寻址范围为00010H到1000。

(2)有一数据存放在内存20000H单元中,先给定段地址为,若想用偏移地址寻到此单元。

则应满足的条件是:

最小为1001H,最大为2000H。

检测点2.3

下面的3条指令执行后,几次修改?

都是在什么时候?

最后中的值是多少?

解:

修改4次;第一次在读取“”后,第二次在读取“”后,第三次在读取“”后,第四次在执行完“”后;最后中的值为0。

实验1查看和内存,用机器指令和汇编指令编程

1.略

2.

(1)略

(2)略

(3)查看内存中的内容。

机主板上的中写有一个生产日期,在内存00H~的某几个单元中,请找出这个生产日期并试图改变它。

解:

内存00为区,内容可读但不可写。

(4)向内存从B8100H开始的单元中填写数据,如:

B810:

00000101020203030404

请读者先填写不同的数据,观察产生的现象;在改变填写的地址,观察产生的现象。

解:

8086的显存地址空间是A0000H~,其中B8000H~为80*25彩色字符模式显示缓冲区,当向这个地址空间写入数据时,这些数据会立即出现在显示器上。

第3章寄存器(内存访问)

检测点3.1

(1)在中,用“d0:

01f”查看内存,结果如下。

0000:

00007080F0306030E2-0080801266202260

0000:

00106226E6D62E3C3000026066688

下面的程序执行前,0,0,写出每条汇编指令执行完后相关寄存器的值。

1

[0000]2662H

[0001]626H

626H

[0000]2662H

[0002]6E6H

48H

[0004]2C14H

00000H

[0002]00E6H

00000H

[000C]0026H

000

(2)内存中的情况如图3.6所示

各寄存器的初始值:

20000100000;

①写出执行的指令序列(用汇编指令写出)。

②写出执行每条指令后,、和相关寄存器中的数值。

③再次体会:

数据和程序有区别吗?

如何确定内存中的信息哪些是数据,哪些是程序?

解:

初始值:

20000100000

①②

6622H6622H其他寄存器保持不变,以下同理

00:

0100000100H

2000H2000H

20000H

[0008]389H

[0002]66H

③没有区别,被指向的信息是程序;被传送、运算等指令操作的是数据。

检测点3.2

(1)补全下面的程序,使其可以将10000H~1000中的8个字,逆序复制到200000H~2000中。

逆序复制的含义如图3.17所示(图中内存里的数据均为假设)。

1000H

2000H

10H

[0]

[2]

[4]

[6]

[8]

[A]

[C]

[E]

(2)补全下面的程序,使其可以将100000H~1000中的8个字,逆序复制到200000H~2000中。

2000H

1000H

0

[E]

[C]

[A]

[8]

[6]

[4]

[2]

[0]

实验2用机器指令和汇编指令编程

1.预备知识:

的使用

2.实验任务

(1)使用,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

2200

0100

[0]58

[2]5

[4]30F0

[6]6021

00;修改的内存单元的地址是220,内容为5

00;修改的内存单元的地址是220,内容为6021

006021

01005

[4]00;修改的内存单元的地址是220,内容为30F0

[6]00;修改的内存单元的地址是220,内容为2F31

注:

内存中的数据会因机器、环境而异

(2)仔细观察图3.19中的实验过程,然后分析:

为什么2000:

0~2000中的内容会发生改变?

解:

t命令为单步中断,会保护现场,即顺序把标志寄存器、、入栈,此题是关于后面章节的中断问题。

第4章第一个程序

实验3编程、编译、连接、跟踪

(1)将下面的程序保存为t1,将其生成可执行文件。

2000h

0

10

4c00h

21h

解:

(2)用跟踪t1的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

解:

(3)的头两个字节是20,用加载,查看的内容。

解:

第5章[]和指令

实验4[]和的使用

(1)编程,向内存0:

200~0:

23F依次传送数据0~63(3)。

解:

0

200H

0

64

[]

s

4c00h

21h

(2)编程,向内存0:

200~0:

23F依次传送数据0~63(3),程序中只能使用9条指令,9条指令中包括“,4c00h”和“21h”。

解:

20h

0

64

[]

s

4c00h

21h

(3)下面的程序的功能是将“,4c00h”之前的指令复制到内存0:

200处,补全程序。

上机调试,跟踪运行结果。

0020h

0

17h

[]

:

[]

s

4c00h

21h

第6章包含多个段的程序

检测点6.1

(1)下面的程序实现依次用内存0:

0~0:

15单元中的内容改写程序中的数据,完成程序:

0123h,0456h,0789h,0,0,0,0,0987h

:

0

0

8

s:

[]

:

[]

2

s

4c00h

21h

(2)下面的程序实现依次用内存0:

0~0:

15单元中的内容改写程序中的数据,数据的传送用栈来进行。

栈空间设置在程序内。

完成程序:

0123h,0456h,0789h,0,0,0,0,0987h

0,0,0,0,0,0,0,0,0,0;10个字单元用栈空间

:

36

0

0

8

s:

[]

:

[]

2

s

4c00h

21h

实验5编写、调试具有多个段的程序

(1)将下面的程序编译连接,用加载、跟踪,然后回答问题

0123h,0456h,0789h,0,0,0,0,0987h

0,0,0,0,0,0,0,0

:

16

:

[0]

:

[2]

:

[2]

:

[0]

4c00h

21h

①执行程序,程序返回前,段中的数据为多少?

解:

不变

②执行程序,程序返回前,155、155、155。

(此题结果因环境而异,但相对差值不变)

③设程序加载后,段的段地址为X,则段的段地址为2,段的段地址为1。

(2)将下面的程序编译连接,用加载、跟踪,然后回答问题

0123H,0456H

0,0

:

16

:

[0]

:

[2]

:

[2]

:

[0]

4c00h

21h

①执行程序,程序返回前,段中的数据为多少?

解:

不变

②执行程序,程序返回前,155、155、155。

(此题结果因环境而异,但相对差值不变)

③设程序加载后,段的段地址为X,则段的段地址为2,段的段地址为1。

④对于如下定义的段:

如果段中的数据占N个字节,则程序加载后,这段实际占有的空间为(16+1)*16.(16为取整数部分)

(3)将下面的程序编译连接,用加载、跟踪,然后回答问题

:

16

:

[0]

:

[2]

:

[2]

:

[0]

4c00h

21h

0123H,0456H

0,0

①执行程序,程序返回前,段中的数据为多少?

解:

不变

②执行程序,程序返回前,155、155、155。

(此题结果因环境而异,但相对差值不变)

③设程序加载后,段的段地址为X,则段的段地址为3,段的段地址为4。

(4)如果将

(1)、

(2)、(3)题中的最后一条伪指令“”改为“”(也就是说不指明程序的入口),则那个程序仍然可以正确执行?

请说明原因。

解:

(1)、

(2)不能正确执行(入口默认为段的第一条指令),(3)能正确执行。

如果不指明程序的入口,编译器自动默认整个代码的第一条指令为程序的入口。

(经1指正,在此鸣谢)

(5)程序如下,编写段中的内容,将a段和b段中的数据依次相加,将结果存到c段中。

a

1,2,3,4,5,6,7,8

a

b

1,2,3,4,5,6,7,8

b

c

0,0,0,0,0,0,0,0

c

:

0

8

s:

:

[]

:

[16]

:

[32]

s

4c00h

21h

(6)程序如下,编写段中的代码,用指令将a段中的前8个字型数据,逆序存储到b段中。

a

1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0

a

b

0,0,0,0,0,0,0,0

b

:

0

16

8

s:

[]

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

当前位置:首页 > IT计算机

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

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