1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx

上传人:b****2 文档编号:3086109 上传时间:2023-05-05 格式:DOCX 页数:66 大小:140.12KB
下载 相关 举报
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第1页
第1页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第2页
第2页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第3页
第3页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第4页
第4页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第5页
第5页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第6页
第6页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第7页
第7页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第8页
第8页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第9页
第9页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第10页
第10页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第11页
第11页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第12页
第12页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第13页
第13页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第14页
第14页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第15页
第15页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第16页
第16页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第17页
第17页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第18页
第18页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第19页
第19页 / 共66页
1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx_第20页
第20页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx

《1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx》由会员分享,可在线阅读,更多相关《1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx(66页珍藏版)》请在冰点文库上搜索。

1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案.docx

1632位微机原理汇编语言及接口技术钱晓捷第2版课后答案

第一章

1.1解:

五代,详细见书

1.2解:

微型计算机:

以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件——控制器和运算器的微处理器为核心,所构造出的计算机系统。

PC机:

PC(PersonalComputer)机就是面向个人单独使用的一类微机。

单片机:

用于控制的微处理器芯片,内部除CPU外还集成了计算机的其他一些主要部件,如:

ROM、RAM、定时器、并行接口、串行接口,有的芯片还集成了A/D、D/A转换电路等。

数字信号处理器DSP:

主要面向大流量数字信号的实时处理,在宿主系统中充当数据处理中心,在网络通信、多媒体应用等领域正得到越来越多的应用

1.3解:

微机主要有存储器、I/O设备和I/O接口、CPU、系统总线、操作系统和应用软件组成,各部分功能如下:

CPU:

统一协调和控制系统中的各个部件

系统总线:

传送信息

存储器:

存放程序和数据

I/O设备:

实现微机的输入输出功能

I/O接口:

I/O设备与CPU的桥梁

操作系统:

管理系统所有的软硬件资源

1.4解:

系统总线:

传递信息的一组公用导线,CPU通过它们与存储器和I/O设备进行信息交换。

好处:

组态灵活、扩展方便

三组信号线:

数据总线、地址总线和控制总线。

其使用特点是:

在某一时刻,只能由一个总线主控设备来控制系统总线,只能有一个发送者向总线发送信号;但可以有多个设备从总线上同时获得信号。

1.5解:

(1)用于数值计算、数据处理及信息管理方向。

采用通用微机,要求有较快的工作速度、较高的运算精度、较大的内存容量和较完备的输入输出设备,为用户提供方便友好的操作界面和简便快捷的维护、扩充手段。

(2)用于过程控制及嵌人应用方向。

采用控制类微机,要求能抵抗各种干扰、适应现场的恶劣环境、确保长时间稳定地工作,要求其实时性要好、强调其体积要小、便携式应用强调其省电。

1.6解:

 

1.7解:

I/O通道:

位于CPU和设备控制器之间,其目的是承担一些原来由CPU处理的I/O任务,从而把CPU从繁杂的I/O任务中解脱出来。

由10根信号线组成(A9-A0)。

1.8解:

BIOS:

基本输入输出系统。

主要功能:

用来驱动和管理诸如键盘、显示器、打印机、磁盘、时钟、串行通信接口等基本的输入输出设备

1.9解:

基本RAM区:

640KB

保留RAM区:

128KB

扩展ROM区:

128KB

基本ROM区:

128KB

1.10解:

(1)、数—用来直接表征量的大小,包括:

定点数、浮点数。

(2)、码—用来指代某个事物或事物的某种状态属性,包括:

二进制、八进制、十进制、十六进制。

区别:

使用场合不同,详见P16.

1.11解:

(1)

(2)

(3)

1.12解:

原码反码补码

+3700100101/25H00100101/25H00100101/25H

-3710100101/A5H11011010/DAH11011011/DBH

1.13解:

+37

-37

16位

32位

16位

32位

0025H

00000025H

FF5BH

FFFFFF5BH

1.14解:

无符号数:

70D

补码有符号数:

70D

BCD码:

46D

ASCII:

F

1.15解:

1)、相加后若出现和大于9,则将和减去10后再向高位进1

2)、若出现组间进位,则将低位加6

1.16解:

详见课本16页。

1.17解:

C3402000

1.18解:

50

50H

十进制值

50

80

二进制

十六进制

二进制

十六进制

00110010B

32H

01010000B

50H

1.19解:

D:

44H

d:

64H

CR:

0DH

LF:

0AH

0:

30H

SP:

20H

NUL:

00H

1.20解:

国标码:

3650H

机内码:

B6B0H

第二章

2.1

算术逻辑单元ALU、寄存器组和控制器;

总线接口单元BIU:

管理8088与系统总线的接口负责cpu对接口和外设进行访问

执行单元EU:

负责指令译码、执行和数据运算;

8位cpu在指令译码前必须等待取指令操作的完成,8088中需要译码的指令已经取到了指令队列,不需要等待取指令。

而取指令是cpu最为频繁的操作,因此8088的结构和操作方式节省了大量等待时间,比8位cpu节省了时间,提高了性能。

2.2

8个8位寄存器:

AH、AL、BH、BL、CH、CL、DH、DL;

8个16位寄存器:

累加器AX、基址寄存器BX、计数器CX、数据寄存器DX、源地址寄存器SI、目的地址寄存器DI、基址指针BP、堆栈指针SP。

2.3

标志用于反映指令执行结果或者控制指令执行形式。

状态标志用于记录程序运行结果的状态信息;控制标志用于控制指令执行的形式。

2.4

例:

有运算:

3AH+7CH=B6H

作为无符号数运算,没有进位,CF=0;

作为有符号数运算,结果超出范围,OF=1.

2.5

8088中每个存储单元有唯一的20位地址,称为物理地址。

处理器通过总线存取存储器数据时,采用这个物理地址。

在用户编程过程中采用的“段地址:

偏移地址”的形式称为逻辑地址。

将逻辑地址中的段地址左移4位,加上偏移地址就得到物理地址。

1MB最多能分成65536个逻辑段。

2.6

代码段:

存放程序的指令序列;

堆栈段:

确定堆栈所在的主存储区;

数据段:

存放当前运行程序的数据;

附加段:

附加数据段,用于数据保存。

另外串操作指令将其作为目的操作数的存放区。

2.7

8088的存储空间分段管理,程序设计时采用逻辑地址。

由于段地址在默认的或指定的段寄存器中,所以只需要偏移地址,称为有效地址EA.

操作数在主存中有以下几种寻址方式:

直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址。

2.8

(1)立即数寻址ax:

1200H

(2)寄存器寻址ax:

0100H

(3)存储器直接寻址ax:

4C2AH

(4)寄存器间接寻址ax:

3412H

(5)寄存器间接寻址ax:

4C2AH

(6)基址变址寻址ax:

7856H

(7)相对基址变址寻址ax:

65B7H

2.9

(1)cx为字寄存器,dl为字节寄存器,类型不匹配。

(2)mov指令的目的操作数只能是寄存器或者主存单元,ip是指针。

(3)不允许立即数到段寄存器的传送。

(4)不允许段寄存器之间的直接传送。

(5)数据溢出。

(6)sp不能用于寄存器间接寻址。

(7)格式不对。

应为:

movax,[bx+di]

(8)mov指令的操作数不能是立即数。

2.10

(1)bx得到table的偏移地址,bx=200H.

(2)将立即数8送到al。

(3)换码,al=12H.

2.11

(1)al=89H

(2)al=12H,cf=1,zf=0,sf=0,of=1,pf=1

(3)al=0AFH,cf=0,zf=0,sf=1,of=0,pf=1

(4)al=0AFH,cf=1,zf=0,sf=1,of=1,pf=1

(5)al=0,cf=0,zf=1,sf=0,of=0,pf=1

(6)al=0FFH,cf=0,zf=0,sf=1,of=0,pf=1

(7)al=0,cf=0,zf=1,sf=0,of=0,pf=1

2.12

(1)adddx,bx

(2)addal,[bx+si]

(3)addwordptr[bx+0B2H],cx

(4)addwordptr[0520H],3412H

(5)addal,0A0H

2.13

运算公式:

商存储在ax,余数存储在dx。

2.14

(1)ax=1470H

(2)ax=1470H,cf=0,of=0,sf=0,zf=0,pf=0

(3)ax=1470H,cf=0,of=0,sf=0,zf=0,pf=0

(4)ax=0,cf=0,of=0,sf=0,zf=1,pf=1

(5)ax=0FFFFH,cf=0,of=0,sf=0,zf=1,pf=1

(6)ax=0FFFFH,cf=0,of=0,sf=1,zf=0,pf=1

2.15

相对寻址方式、直接寻址方式、间接寻址方式。

2.16

(1)1256H

(2)3280H

2.17

(1)ax=1E1EH

(2)al的D0、D7位不全为0

(3)cx<64H

2.18

执行65536次。

2.19

功能:

将数组中每个字元素相加,结果存储于total。

2.20

(1)leasi,string

Movdh,[si]

Movdl,[si+5]

(2)movaxwordptrbuffer1

Subaxwordptrbuffer2

Movdxwordptrbuffer1+2

Sbbdxwordptrbuffer2+2

(3)testdx,0F000H

jzeven

even:

movax,0

(4)movcx,4

again:

sardx,1

rcrax,1

loopagain

(5)movcx,100

movsi,0

again:

moval,0FFH

addal,array[si]

movarray[si],al

incsi

loopagain

2.21

Htoascproc

Movbl,al

Moval,ah

Movbh,10

Mulbh

Andax,00FFH

Addal,bl

Htoend:

ret

Htoascendp

2.22

计算机系统利用中断为用户提供硬件设备驱动程序。

在IBM-PC系列微机中,基本输入输出系统ROM-BIOS和DOS都提供了丰富的中断服务程序,称为系统功能调用。

调用步骤

(1)AH中设置系统功能调用号

(2)在指定寄存器中设置入口参数

(3)使用中断调用指令执行功能调用

(4)根据出口参数分析调用情况

2.23

Htoascproc

Andal,0FH

Addal,90H

Daa

Adcal,40H

Daa

Movah,02H

Movdl,al

Int21H

Ret

Htoascendp

2.24

Numoutproc

Xorah,ah

Aam

Addax,3030H

Movdl,ah

Movah,02H

Int21H

Movdl,al

Movah,02H

Int31H

Ret

Numoutendp

2.25

Msgkeydb”inputnumber0-9”,”$”

Msgwrgdb”error”,”$”

Movah,09H

Movdx,offsetmsgkey

Int21H

Again:

movah,01H

Int21H

Cmpal,30H

Jbdisp

Cmpal,39H

Jadisp

Movdl,al

Movah,02H

Int21H

Jmpdone

Disp:

movdx,offsetmsgwrg

Movah,09H

Int21H

Jmpagain

Done:

movah,02H

Movdl,al

Int21H

 

第3章

3.2解:

(1)完整的汇编语言源程序由段组成

(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列

(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点

(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内

(5)通常,程序还需要一个堆栈段

3.3解:

存储模式

特点

TINY

COM类型程序,只有一个小于64KB的逻辑段(MASM6.x支持)

SMALL

小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于64KB

COMPACT

代码少、数据多的程序,只有一个代码段,但有多个数据段

MEDIUM

代码多、数据少的程序,可有多个代码段,只有一个数据段

LARGE

大应用程序,可有多个代码段和多个数据段(静态数据小于64KB)

HUGE

更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制)

FLAT

32位应用程序,运行在32位80x86CPU和Windows9x或NT环境

 

3.6解:

stacksegmentstack

db1024(0)

stackends

datasegment

stringdb'Hello,Assembly!

',0dH,0aH,‘$’

dataends

codesegment'code'

assumecs:

code,ds:

data,ss:

stack

start:

movdx,offsetstring

movah,9

int21h

codeends

endstart

 

3.9解:

(1)al=67h

(2)ax=133h,dx=4h

(3)ax=0230h

(4)al=41h

(4)ax=7654h

3.10解:

(1)

41h

42h

43h

10

10h

45h

46h

-1

?

4

4

4

-1

4

4

4

-1

4

4

4

(2)

10h

00h

0fbh

0ffh

?

?

?

?

?

?

3.11解:

.data

my1bdb'PersonalComputer'

my2bdb20

my3bdb14h

my4bdb00010100b

my5wdw20dup(?

my6c=100

my7c=<'PersonalComputer'>

3.12解:

利用定位伪指令控制,如org,even,align

3.13解:

包括逻辑地址和类型两种属性。

3.14解:

;数据段

org100h

varwdw1234h,5678h

varbdb3,4

varddd12345678h

buffdd10dup(?

messdb'Hello'

;代码段

movax,offsetvarb+offsetmess

movax,typebuff+typemess+typevard

movax,sizeofvarw+sizeofbuff+sizeofmess

movax,lengthofvarw+lengthofvard

3.15解:

(1)1000超过一个字节所能表达的最大整数

(2)SI应为偶数

(3)两个内存单元不能直接运算

(4)应改为[al+1]

(5)条件转移指令后面应接标号,而不是变量

3.16解:

movah,1;只允许输入小写字母

int21h

subal,20h;转换为大写字母

movdl,al

movah,2

int21h;显示

3.17解:

movbx,offsetLEDtable

moval,lednum

xlat

3.18解:

movax,bufX

cmpax,bufY

jaedone

movax,bufY

done:

movbufZ,ax

3.19解:

.modelsmall

.stack

.data

bufXdw-7

signXdb?

.code

.startup

cmpbufX,0;testbufX,80h

jlnext;jnznext

movsignX,0

jmpdone

next:

movsignX,-1

done:

.exit0

end

3.20解:

movdl,’2’

movax,bufX

cmpax,bufY

jenext1

decdl

next1:

cmpax,bufZ

jenext2

decdl

next2:

movah,2

int21h

3.21解:

;代码段

moval,number

movbx,0;BX←记录为1的位数

restart:

cmpal,0;AL=0结束

jzdone

again:

shral,1;最低位右移进入CF

jcnext;为1,转移

incbx;不为1,继续

jmpagain

next:

pushax

pushbx

shlbx,1;位数乘以2(偏移地址要用2个字节单元)

jmpaddrs[bx];间接转移:

IP←[table+BX]

;以下是各个处理程序段

fun0:

movdl,'0'

jmpdisp

fun1:

movdl,'1'

jmpdisp

fun2:

movdl,'2'

jmpdisp

fun3:

movdl,'3'

jmpdisp

fun4:

movdl,'4'

jmpdisp

fun5:

movdl,'5'

jmpdisp

fun6:

movdl,'6'

jmpdisp

fun7:

movdl,'7'

jmpdisp

;

disp:

movah,2;显示一个字符

int21h

popbx

popax

jmprestart

done:

3.22编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。

;wjxt322.asm

.modelsmall

.stack

.data

b_datadb12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h;原始数据

numequ10;数据个数

sumdb?

;预留结果单元

.code

.startup

xorsi,si;位移量清零

xoral,al;取第一个数

movcx,num;累加次数

again:

addal,b_data[si];累加

incsi;指向下一个数

loopagain;如未完,继续累加

movsum,al;完了,存结果

.exit0

end

3.23求主存0040h:

0开始的一个64KB物理段中共有多少个空格?

;wjxt323.asm

.modelsmall

.code

start:

movax,0040h;送段地址

movds,ax

movsi,0;偏移地址

movcx,si;计数(循环次数)

xorax,ax;空格计数器清零

again:

cmpbyteptr[si],20h;与空格的ASCII码比较

jnenext;不是空格,转

incax;是空格,空格数加1

next:

incsi;修改地址指针

loopagain;cx=cx-1,如cx=0退出循环

.exit0

endstart

3.24编写计算100个16位正整数之和的程序。

如果和不超过16位字的范围(65535),则保存其和到wordsum,如超过则显示‘overflow’。

答:

;数据段

countequ100

parraydwcountdup(?

);假设有100个数据

wordsumdw0

msgdb‘overflow’,’$’

;代码段

movcx,count

movax,0

movbx,offsetparray

again:

addax,[bx]

jncnext

movdx,offsetmsg

movah,9

int21h;显示溢出信息

jmpdone;然后,跳出循环体

next:

addbx,2

loopagain

movwordsum,ax

done:

3.25编程把—个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。

转换算法可以是:

用二进制数除以10000,商为“万位”,再用余数除以1000,得到“千位”;依次用余数除以l00、10和l,得到“百位”、“十位”和“个位”。

;wjxt325.asm

.modelsmall

.stack256

.data

arraydw?

;源字数据

dbcddb5dup(?

);五位bcd结果,高对高低对低

.code

.startup

movdx,array;取源数据(余数)

movbx,10000;除数

movcx,10;除数系数

movsi,4;目的数据高位位移量

again:

movax,dx;dx.ax中存放被除数

movdx,0

divbx;除于bx,商ax,余数dx

movdbcd[si],al;商<10,存结果

pushdx;暂存余数

movax,bx;除数除于10

movdx,0

divcx;dx.ax除于cx,商ax、余数0存在dx

movbx,ax;bx是除数

popdx

decsi;目的数据位移量减1

jnzagain

movdbcd,dl;存个位数(<10)

.exit0

end

3.26解:

(1)汇编语言中,子程序要用一对过程伪指令PROC和ENDP声明,格式如下:

过程名PROC[NEAR|FAR]

……;过程体

过程名ENDP

(2)保护用到的寄存器内容,以便子程序返回时进行相应的恢复。

(3)改错:

crazyproc

pishbx

pushcx

xorax,ax

xordx,dx

again:

adda,[bx]

adcdx,0

incbx

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

当前位置:首页 > 工程科技 > 能源化工

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

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