微机原理习题答案4.docx

上传人:b****8 文档编号:29974825 上传时间:2023-08-03 格式:DOCX 页数:20 大小:19.14KB
下载 相关 举报
微机原理习题答案4.docx_第1页
第1页 / 共20页
微机原理习题答案4.docx_第2页
第2页 / 共20页
微机原理习题答案4.docx_第3页
第3页 / 共20页
微机原理习题答案4.docx_第4页
第4页 / 共20页
微机原理习题答案4.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

微机原理习题答案4.docx

《微机原理习题答案4.docx》由会员分享,可在线阅读,更多相关《微机原理习题答案4.docx(20页珍藏版)》请在冰豆网上搜索。

微机原理习题答案4.docx

微机原理习题答案4

微型计算机原理第4章习题参考答案

4.1已知某数据段中有

COUNT1EQU16H

COUNT2DW16H

下面两条指令有何异同。

MOVAX,COUNT1

MOVBX,COUNT2

解:

同:

执行完之后,AX=BX=16H

异:

MOVAX,COUNT1向AX中传送的是立即数,而MOVBX,COUNT2向BX中传送的是变量内容。

4.2下列程序段执行后,寄存器AX、BX和CX的内容分别是多少?

ORG0202H

DA-WORDDW20H

MOVAX,DA-WORD;AX=0020H

MOVBX,OFFSETDA-WORD;BX=0202H

MOVCL,BYTEPTRDA-WORD;CL=20H

MOVCH,TYPEDA-WORD;CH=02H

解:

AX=0020H,BX=0202H,CX=0220H

4.3设平面上有一点P的直角坐标(x,y),试编制完成以下操作的程序:

如P点落在第I象限,则K=I;

如P点落在坐标轴上,则K=0。

解:

DATSEGMENT

msgdb'pleaseinputnumberonly!

$'

MSG1DB10,13,'INPUTX:

$'

MSG2DB10,13,'INPUTY:

$'

xbufdb20,0

xbuf1db20dup(?

ybufdb20,0

ybuf1db20dup(?

D1DB10,13,'K='

D2DB'?

$'

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

movdx,offsetmsg

movah,9

int21h

MOVDX,OFFSETMSG1

MOVAH,9

INT21H

movdx,offsetxbuf

MOVAH,0AH

INT21H

MOVDX,OFFSETMSG2

MOVAH,9

INT21H

movdx,offsetybuf

MOVAH,0AH

INT21H

CMPybuf1,'0'

JEPRO1

CMPxbuf1,'0'

JEPRO1

cmpxbuf1,'-'

JzPRO2

CMPybuf1,'-'

JePRO4

MOVD2,'1'

JMPSHOW

PRO1:

MOVD2,'0'

JMPSHOW

PRO2:

CMPybuf1,'-'

JePRO3

MOVD2,'2'

JMPSHOW

PRO3:

MOVD2,'3'

JMPSHOW

PRO4:

MOVD2,'4'

SHOW:

MOVDX,OFFSETD1

MOVAH,9

INT21H

movah,4ch

int21h

CODENDS

ENDBG

4.4试编制一程序,把CHAR1中各小写字母分别转换为对应的大写字母,并存放于CHAR2开始的内存单元中。

CHARDB‘abcdef’

CHAR2DB$—CHAR1DUP(0)

解:

DATSEGMENT

CHAR1DB'abcdefgh'

CHAR2DB$-CHAR1DUP(0)

NEQU$-CHAR2

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVSI,0

MOVCX,N

LP:

MOVAL,CHAR1[SI]

SUBAL,20H

MOVCHAR2[SI],AL

INCSI

LOOPLP

MOVAH,4CH

INT21H

CODENDS

ENDBG_

4.5试编写一程序,把DABY1字节单元中数据分解成3个八进制数,其最高位八进制数据存放在DABY2字节单元中,最低位存放在DABY2+2字节单元中。

DABY1DB6BH

DABY2DB3DUP(0)

解:

DATSEGMENT

DABY1DB6BH

DABY2DB3DUP(0)

DB24H

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVAL,DABY1

ANDAL,07H

MOVDABY2+2,AL

MOVAL,DABY1

ANDAL,38H

MOVCL,3

SHRAL,CL

MOVDABY2+1,AL

MOVAL,DABY1

ANDAL,0C0H

MOVCL,6

SHRAL,CL

MOVDABY2,AL

MOVAH,4CH

INT21H

CODENDS

ENDBG_

 

4.12试编写一程序,编程计算(A*B+C-70)/A,其中A、B、C均为字节变量。

解:

DATSEGMENT

ADB23

BDB45

CDB67

shangDB?

yushudb?

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVAL,A

IMULB

MOVCL,C

MOVCH,0

ADDAX,CX

MOVDX,70

SUBAX,DX

MOVBL,A

IDIVBL

MOVshang,AL

movyushu,ah

MOVAH,4CH

INT21H

CODENDS

ENDBG_

 

_4.14试编写一程序,找出BUF数据区中带符号数的最大数和最小数。

解:

DATSEGMENT

BUFDB3,6,5,4,1,-56,89,78,-67,12,43,45,-32

NEQU$-BUF

maxdb?

mindb?

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVSI,1

MOVCX,N-1

moval,buf

movbl,al

RECMP1:

CMPAL,BUF[SI]

JgENOP1

movAL,BUF[SI]

NOP1:

cmpbl,buf[si]

jlenop2

movbl,buf[si]

nop2:

INCSI

LOOPRECMP1

movmax,al

movmin,bl

MOVAH,4CH

INT21H

CODENDS

ENDBG_

4.5试编写一程序,把DABY1字节单元中数据分解成3个八进制数,其最高位八进制数据存放在DABY2字节单元中,最低位存放在DABY2+2字节单元中。

DABY1DB6BH

DABY2DB3DUP(0)

解:

DATSEGMENT

DABY1DB6BH

DABY2DB3DUP(0)

DB24H

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVAL,DABY1

ANDAL,07H

MOVDABY2+2,AL

MOVAL,DABY1

ANDAL,38H

MOVCL,3

SHRAL,CL

MOVDABY2+1,AL

MOVAL,DABY1

ANDAL,0C0H

MOVCL,6

SHRAL,CL

MOVDABY2,AL

MOVAH,4CH

INT21H

CODENDS

ENDBG_

 

4.6从BUF地址处起,存放有100字节的字符串,设其中有一个以上的‘A’字符,编程查找出第一个‘A’字符相对起始地址的距离,并将其存入LEN单元。

解:

DATSEGMENT

STRING‘1234ABCE--------’

NEQU$-STRING

KEYDB‘A‘

LENDB?

MSG1DB‘NOTFOUNDKEY$’

MSG2DB‘THEKEYISAT:

$‘

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVSI,0

MOVCX,N-1

MOVAL,BYTEPTRKEY

LP:

CMPAL,STRING[SI]

12

34

0

56

78

00

90

00

46

AB

34

12

00

00

04

00

10

00

00

00

00

00

00

JNENEXT

JEFIND

NEXT:

INCSI

LOOPLP

MOVDX,OFFSETMSG1

MOVAH,9

INT21H

JMPLAST

FIND:

MOVLEN,SI

MOVDX,OFFSETMSG2

MOVAH,9

INT21H

MOVDL,LEN

MOVAH,2

INT21H

LAST:

MOVAH,4CH

INT21H

CODENDS

4.7写出下列逻辑地址的段地址,偏移地址和物理地址。

(1)4312H:

0B74H

(2)10ADH:

0DE98H

(3)8314H:

0FF64H(4)78BCH:

0FD42H

解:

(1)段地址:

4312H,偏移地址:

0B74H,物理地址:

43C94H

(2)段地址:

10ADH,偏移地址:

0DE98H,物理地址:

1E968H

(3)段地址:

8314H,偏移地址:

0FF64H,物理地址:

930A4H

(4)段地址:

78BCH,偏移地址:

0FD42H,物理地址:

88902H

4.8某程序设置的数据区如下所示

DATASEGMENT

DB1DB12H,34H,0,56H

DW1DW78H,90H,0AB46H

ADR1DWDB1

ADR2DWDW1

AAADW$—DB1

BUFDB5DUP(0)

DATAENDS

画出该数据段内容在内存中的存放形式

(要求用十六进制补码表示,按字节组织)

解:

如右图示

4.9假设BX=54A3H,变量VALUE中存放的内容为68H,确定下列各条指令单独执行后BX=?

(1)XORBX,VALUE

(2)ORBX,VALUE

(3)ANDBX,00H(4)SUBBX,VALUE

(5)XORBX,0FFH(6)TESTBX,01H

解:

(1)BX=54CBH

(2)BX=54EBH

(3)BX=00H(4)BX=543BH

(5)BX=545CH(6)BX=54A3H,按位与,不回送结果

4.10以BUF1和BUF2开头的两个字符串,其长度均为LEN,试编程实现。

(1)将BUF1开头的字符串传送BUF2开始的内存空间;

(2)将BUF1开始的内存空间全部为零。

解:

DATSEGMENT

BUF1DB‘ABCD——‘

BUF2DB‘1234——‘

LENEQU$—BUF2

DATENDS

CODSEGMENTS

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVSI,0

MOVCX,LEN

LP1:

MOVAL,BUF1[SI]

MOVBUF2[SI],AL

INCSI

LOOPLP1

MOVSI,0

MOVCX,LEN

MOVAL,0

LP2:

MOVBUF1[SI],AL

INCSI

LOOPLP2

MOVAH,4CH

INT21H

CODENDS

ENDBG

4.11假设数据段的定义如下所示。

P1DW?

P2DB32DUP(?

PLLENTHEQU$—P1

试问PLENTH的值为多少?

表示什么意义?

解:

PLENTH的值为34,它表示包括P1、P2的数据变量的总长度(字节数)。

4.12试编写一程序,编程计算(A*B+C-70)/A,其中A、B、C均为字节变量。

解:

DATSEGMENT

ADB23

BDB45

CDB67

shangDB?

yushudb?

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVAL,A

IMULB

MOVCL,C

MOVCH,0

ADDAX,CX

MOVDX,70

SUBAX,DX

MOVBL,A

IDIVBL

MOVshang,AL

movyushu,ah

MOVAH,4CH

INT21H

CODENDS

ENDBG_

4.14试编写一程序,找出BUF数据区中带符号数的最大数和最小数。

解:

DATSEGMENT

BUFDB3,6,5,4,1,-56,89,78,-67,12,43,45,-32

NEQU$-BUF

maxdb?

mindb?

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,DAT

MOVDS,AX

MOVSI,1

MOVCX,N-1

moval,buf

movbl,al

RECMP1:

CMPAL,BUF[SI]

JgENOP1

movAL,BUF[SI]

NOP1:

cmpbl,buf[si]

jlenop2

movbl,buf[si]

nop2:

INCSI

LOOPRECMP1

movmax,al

movmin,bl

MOVAH,4CH

INT21H

CODENDS

ENDBG_

4.17在自BLOCK开始的存储区中有100个带符号数。

试用气泡排列法编写成一个程序使它们排列有序。

解:

按照从小到大的顺序排列:

DATSEGMENT

BLOCKDB1,2,3,-3,4,43,5,-45,23,-43,123,-123,43

nequ$-block

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

BG:

MOVAX,dat

MOVDS,AX

movdx,n-1

movsi,0

lp:

moval,block[si]

MOVCX,n-1

subcx,si

movbx,1

RECMP:

cmpAL,block[bx+SI]

JLENOCH

xchgAL,block[bx+SI]

NOCH:

INCbx

LOOPRECMP

movblock[si],al

incsi

decdx

jnzlp

MOVAH,4CH

INT21H

CODENDS

ENDBG

4.20试编程:

从键盘上输入同学的姓名Mr.ABC或MrS.XYZ,当按动回车键时,屏幕上将显示出

“WelcomeMR.ABC”或“WelcomeMrS.XYZ”

解:

datsegment

msg1db10,'pleaseinputyouname:

$'

msg2db10,13,'welcome$'

keybufdb50,0

keydb50dup('$')

datends

codsegment

assumecs:

cod,ds:

dat

beg:

movax,dat

movds,ax

lp:

movdx,offsetmsg1

movah,9

int21h

movdx,offsetkeybuf

movah,10

int21h

;moval,13

;cmpal,key

;jeend_l

movdx,offsetmsg2

movah,9

int21h

movdx,offsetkey

movah,9

int21h

;jmplp

end_l:

movah,4ch

int21h

codends

endbeg

4.20试编程:

从键盘上输入同学的姓名Mr.ABC或MrS.XYZ,当按动回车键时,屏幕上将显示出

“WelcomeMR.ABC”或“WelcomeMrS.XYZ”

解:

datsegment

msg1db10,'pleaseinputyouname:

$'

msg2db10,13,'welcome$'

keybufdb50,0

keydb50dup('$')

datends

codsegment

assumecs:

cod,ds:

dat

beg:

movax,dat

movds,ax

lp:

movdx,offsetmsg1

movah,9

int21h

movdx,offsetkeybuf

movah,10

int21h

;moval,13

;cmpal,key

;jeend_l

movdx,offsetmsg2

movah,9

int21h

movdx,offsetkey

movah,9

int21h

;jmplp

end_l:

movah,4ch

int21h

codends

endbeg

 

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

当前位置:首页 > 自然科学 > 生物学

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

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