微机原理与接口技术李珍香版课后习题4参考答案.docx

上传人:b****6 文档编号:8552129 上传时间:2023-01-31 格式:DOCX 页数:14 大小:100.60KB
下载 相关 举报
微机原理与接口技术李珍香版课后习题4参考答案.docx_第1页
第1页 / 共14页
微机原理与接口技术李珍香版课后习题4参考答案.docx_第2页
第2页 / 共14页
微机原理与接口技术李珍香版课后习题4参考答案.docx_第3页
第3页 / 共14页
微机原理与接口技术李珍香版课后习题4参考答案.docx_第4页
第4页 / 共14页
微机原理与接口技术李珍香版课后习题4参考答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术李珍香版课后习题4参考答案.docx

《微机原理与接口技术李珍香版课后习题4参考答案.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术李珍香版课后习题4参考答案.docx(14页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术李珍香版课后习题4参考答案.docx

微机原理与接口技术李珍香版课后习题4参考答案

 

微机原理与接口技术李珍香版课后习题4参考答案

习题4参考答案

4.1简述汇编语言与机器语言及高级语言间的区别

参考答案:

要点:

汇编语言与机器语言的区别:

汇编语言采用符号表示,机器语言二进制表示。

汇编语言与高级语言的区别:

汇编语言属于低级语言,每条指令与对应的机器指令间是一一对应关系,而高级语言接近于自然语言。

4.2简述汇编语言程序的指令语句与伪指令语句在写法及功能上的不同

参考答案:

要点:

写法上的不同主要表现在第一部分上,一条指令的第一部分“标号”若需要,则在标号后面一定有冒号“:

”,而伪指令语句的第一部分在“名字”后没有冒号“:

”。

功能上的不同:

每一条指令都有对应的机器指令,在程序运行过程中执行到每条指令时起作用;伪指令没有对应的机器指令,是在程序汇编时起作用。

4.3汇编语言程序的标号有何规定标号有哪三种属性

参考答案:

4.4汇编语言程序的变量如何定义变量有哪三种属性

参考答案:

4.5汇编语言程序中,算术表达式、逻辑表达式、关系表达式各有什么含义?

参考答案:

4.6简述汇编语言程序上机的基本步骤和每步所进行的主要操作

参考答案:

4.7设TABLE为数据段中0100H单元的符号名,其中存放的内容为FF00H,试分析以下两条指令分别执行后的结果,并指出它们之间的区别?

MOVAX,TABLE

MOVAX,OFFSETTABLE

参考答案:

第一条指令传送的是TABLE所指单元的内容,AX结果为FF00H;第二条指令传送的是TABLE的偏移地址,AX结果为0100H。

4.8设有如下的变量定义:

DATASEGMENT

ARRAYDW1000H,2000H,3000H,4000H,5000H

BUFDW

DATAENDS

请分别完成以下操作

(1)用一条指令完成将ARRAY的偏移地址送BX

(2)用一条指令完成将ARRAY的第一字节单元内容送AL

(3)用一条指令完成将ARRAY定义的数据个数送CX

参考答案:

(1)LEABX,ARRAY

(2)MOVAL,BYTEPTRARRAY

(3)MOVCX,(BUF-ARRAY)/2

4.9已知一数据段中的数据定义如下:

DATASEGMENT

STR1DB1,2,3,4,5

STR2DB‘12345’

CONTEQU20

NUMBDB3DUP(6)

NUMWDW20H,-80H

TABLEDW0

DATAENDS

试根据以上数据段的定义,指出下列每小题指令中的错误或者用得不当的指令。

(1)MOVAX,STR1;STR1定义为字节类型,不能当字变量使用

(2)MOVBX,OFFSETNUMB

MOV[BX],’+’;’+’为立即数,[BX]存储器操作数应明确类型

(3)MOVDL,NUMW+2;NUMW为字类型,不能当字节变量使用

(4)MOVBX,OFFSETSTR1

MOVDH,BX+3;源操作数“BX+3”不是正确表达式

(5)INCCONT;INC中的操作数不能为立即数

(6)MOVSTR1,STR2;MOV中的两个操作数不能同时为存储器操作数

(7)MOVAX,NUMW+2

MOVDX,0;此处不应用MOV指令,而应该用CWD指令

DIVNUMW;此处不应用DIV指令,而应该用IDIV指令

参考答案:

分号“;”后面为答案

4.10编写一个汇编语言程序,将字符串“HelloWowld!

”中的全部小写字母转换为大写字母,并存放回原地址处。

参考程序:

DATASEGMENT

STRINGDB"HelloWowld!

"

LENequ$-string

DATAENDS

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movbx,offsetstring

movcl,len

next:

moval,[bx]

cmpal,'a'

jblop

cmpal,'z'

jalop

subal,20h

mov[bx],al

lop:

incbx

deccl

jnznext

movah,4ch

int21h

codeends

endstart

4.11编写一个带符号数四则运算的程序,完成(Z-(X*Y+200))/20的运算,商送V单元,余数送W单元。

这里,X,Y,Z均为16位的带符号数,内容用户自己定义。

参考程序:

DATASEGMENT

xDW2

ydw-10

zdw300

vdw

wdw

DATAENDS

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movax,x

movbx,y

imulbx

movcx,200

movbx,0

addax,cx

adcdx,bx

movcx,z

movbx,0

subcx,ax

sbbbx,dx

xchgcx,ax

xchgbx,dx

movbx,20

idivbx

movv,ax

movw,dx

movah,4ch

int21h

codeends

endstart

4.12编写一个汇编语言程序,完成以下要求。

从BUF单元处定义有10个带符号字数据:

-1、3、24、94、62、72、55、0、-48、99,试找出它们中的最大值和平均值,并依次分别存放至该数据区的后2个单元中(假设这10个数的和值不超过16位)。

参考程序:

DATASEGMENT

bufDW-1,3,24,94,62,72,55,0,-48,99

nequ($-buf)/2

maxdw

avedb,

DATAENDS

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

leasi,buf

clc

xorax,ax

xordx,dx

movax,[si]

movcx,n

next:

adcdx,[si]

cmpax,[si]

jgegoon

movax,[si]

goon:

addsi,2

loopnext

movmax,ax

movbl,n

movax,dx

idivbl

movave,al

movave+1,ah

movah,4ch

int21h

codeends

endstart

4.13编写一个统计分数段的子程序,要求将100分、90~99分、80~89分、70~79分、60~69分、60分以下的学生人数统计出来,并分别送往S10、S9、S8、S7、S6、S5各单元中。

(学生人数和每人的成绩由用户自己定义)

参考程序:

DATASEGMENT

graddb77,68,82,90,54,69,72,86,91,100

s10db

s9db

s8db

s7db

s6db

s5db

DATAENDS

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,s10-grad

callcount

movah,4ch

int21h

countprocnear

movsi,0

next:

moval,grad[si]

movah,0

movbx,10

divbl

cbw

movbx,ax

subbx,10

negbx

incs10[bx]

incsi

loopnext

ret

countendp

codeends

endstart

4.14将AX寄存器中的16位数据分成4组(从高到低),每组4位,然后把这四组数作为数当中的低4位分别放在AL、BL、CL和DL中。

参考程序:

codesegment

assumecs:

code

start:

MOVBX,AX

MOVDX,AX

MOVCL,4

SHRAH,CL

MOVAL,AH

MOVBL,BH

ANDBL,0FH

MOVDH,DL

SHRDH,CL

MOVCL,DH

movah,4ch

int21h

codeends

endstart

4.15设有两个16位整数变量A和B,试编写完成下述操作的程序:

(1)若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中。

(2)若两个数均为奇数,则两数分别减1,并存回原变量中。

(3)若两个数均为偶数,则两变量不变。

参考程序:

DATASEGMENT

adw

bdw

DATAENDS

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

lop:

movax,a

movbx,b

xorax,bx

testax,0001H

jznext

testbx,0001H

jzexit

xchgbx,a

movb,bx

jmpexit

next:

testbx,0001h

jzexit

decb

deca

exit:

movah,4ch

int21h

codeends

endstart

4.16设有一段英文,其字符变量名为ENG,并以$字符结束。

试编写一程序,查找单词“is”在该文中的出现次数,并将次数显示出来。

(英文内容由用户自己定义)

参考程序:

DATASEGMENT

ENGdb'thisisanprogramexample$'

n1equ$-eng

strdb'is'

n2equ$-str

DATAENDS

codesegment

assumecs:

code,ds:

data,es:

data

start:

movax,data

movds,ax

moves,ax

xordx,dx

movcl,n1

xorch,ch

cmpcx,n2

jbedisp

moval,str

leadi,eng

cld

search:

repnescasb

jnedisp

movbl,str+1

cmpes:

[di],bl

jeexist

jcxzdisp

lop:

jmpsearch

exist:

incdl

cmpcx,1

jzdisp

jmplop

disp:

ordl,30h

movah,2

int21h

movah,4ch

int21h

codeends

endstart

4.17请编写程序实现以下功能:

设在A、B和C单元中分别存放着一个8位带符号数。

试比较这3个数,若3个数都不是0,则求出3数之和并存放于D单元中;若其中有一个数为0,则把其它两个单元也清零。

参考程序:

DATASEGMENT

aDb10

bdb-10

cdb30

ddb

DATAENDS

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

xordx,dx

cmpa,0

jznext

movdl,a

cmpb,0

jnzlop1

next:

movb,0

movc,0

mova,0

jmpexit

lop1:

adddl,b

cmpc,0

jznext

adddl,c

movd,dl

exit:

movah,4ch

int21h

codeends

endstart

4.18从键盘输入一系列字符(以回车符结束),并按字母、数字及其它字符分类计数,最后显示出这三类的计数结果。

参考程序:

datasegment

sdb;统计字符

ddb;统计数字

odb;统计其它字符

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

lop:

movah,1

int21h

cmpal,0dh

jzdisp

cmpal,30h

jbother

cmpal,39h

jbeshu

cmpal,41h

jbother

cmpal,5ah

jbestr

cmpal,61h

jbother

cmpal,7ah

jbestr

jmplop

other:

inco

jmplop

shu:

incd

jmplop

str:

incs

jmplop

disp:

movdl,0ah

movah,2

int21h

movdl,0dh

movah,2

int21h

movdl,s

ordl,30h

movah,2

int21h

movdl,d

ordl,30h

int21h

movdl,o

ordl,30h

int21h

movah,4ch

int21h

codeends

endstart

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

当前位置:首页 > 高等教育 > 工学

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

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