汇编语言课后习题答案_第1页
汇编语言课后习题答案_第2页
汇编语言课后习题答案_第3页
汇编语言课后习题答案_第4页
汇编语言课后习题答案_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章

1、答:直接由指令指定的I/O端口数为256个。

2、答:

3、答:字节单元:(30022H)=ABH,(30024H)=EFH

字单元:(30021H)=AB34H.(3OO22H)=CDABH.

4、答:3017:000A的存储单元的物理地址是3017AH,

3015:002A的存储单元的物理地址是3017AH,

3010:007A的存储单元的物理地址是3017AH»

5、答:该程序的第一种字的物理地址是0AAA40H,

6,答:条件标志OF、SF、ZF、CF的值依次分别为0、0、0、0。

Iiron

l(F4aH

2(»:OH

2W40H

2l»X)0H

3IF00H

31FF0H

4IFF0H

7、答:⑴AX、BX、CX,DX、AH,AL,BH,BL、CH,CL,DH、DL,

SP、BP、DI、SI(注意:学生尽量不要用SP参与加减运算)

(2)CX

(3)DX、AX、AH、AL

(4)CS、DS、ES、SS

(5)FLAGS

(6)IP

(7)SS、SP、BP

8、答:可以用来指示存储器地址的寄存器有BX、SP、BP、DI、SI,IP,CS、DS、

ES、SS»

9、答:唯一对的的是D。

第二章

2、答:

(1)ADDDX,BX

(2)ADDAL.

(3)ADD|BX+0B2H],CX

(4)ADDI0524H].2A59H

(5)ADDAL,0B5H

3、答:

(1)MOVBX.OFFSETBLOCK+OAH

MOVDX.[BX|

(2)MOVBX.OAH

MOVDX,BLOCK|BX]

(3)MOVBX.OFFSETBLOCK

MOVSI,OAH

MOVDX.[BX||Si|

4,答:

(I)I200H

(2)01OOH

(3)4C2AH

(4)3412H

(5)4C2AH

(6)7856H

(7)65B7H

6、答:

MOVBX.H

LESDI.(BX)

MOVAX.ES:IDll

7、答:

(i)064DH

(2)0691H

(3)05ECH

9,答:

(I)MOVAX.IBX+OCH|

MOVZERO,AX

(2)MOVAX.ARRAY[BX]

MOVZERO,AX

10、答:

(1)(AX)=1234H

<2)(AX)-OO32H

11、答:

(AX)=1E00H

12、答:

LEABX.CSTRING

MOVDLJBXJ

MOVDH,IBX+6]

13、答:

3FFA000AC0F79H

OFFAOOOAE8057HOFFAOOOAE8057H•

0FFA000B0OFFAOOOB0FFA0:00B0

(SPHDOBOH(SPHXJACH(SP>OOAEH

初始宓

14、答:

LESBX,[]

MOVAX,ES:[BX)

16,答:

(1)74D4HSF=OZF=OCF=OOF=0

(2)A5CIHSF=1ZF=OCF=OOI^1

(3)3240HSF=OZF=OCF=1OF=0

(4)OOOOHSF=OZF=1CF=IOF=0

17、答:

(1)0C754HSF=1ZF=OCF=1Ol:=0

(2)12B0HSF=OZF=OCF=OOF=0

(3)45B0HSF=OZF=OCF=OOF=1

(4)9F24HSF=IZF=OCF=OOF=0

21、答:

(1)MOVAX,Z

SUBAX.X

ADDAX,W

MOVZ.AX

(2)MOVBX.X

ADDBX.6

MOVCX.R

ADDCX.9

MOVAX.W

SUBAX.BX

SUBAX,CX

MOVZ.AX

(3)MOVAX.W

1MULX

MOVBX.Y

ADDBX.6

1DIVBX

MOVZ,AX

MOVR.DX

22、答:

NEGDX

NEGAX

SBBDX.O

16、答:

MOVAX,A

MOVDX.A+2

TESTDX.8000H

JZSTORE;ME

NEGDX

NEGAX

SBBDX.O

STORE:MOVB.AX

MOVB+2,DX

17、答:

(1)MOVAL.S

SUBAL,6

DAS

ADDAL,V

DAA

MOVU,AL

(2)

MOVAL.Z

SUBAL.U

DAS

MOVU,AL

MOVAL.X

ADDAL.W

DAA

SUBAL,U

DAS

MOVU,AL

23、答:

(I)(BX)=9AH

(2)(BX)=61H

(3)(BX)=OFBH

(4)(BX)=1CH

<5)<BX)-0

(6)(BX)=0E3H

26、答:

把(DXWAX)中的双字左移四位(乘以16)。

20、答:

MOVCL.4

SHRAX,CL

MOVBL.DL

SHRDX,CL

SHLBL.CL

ORAH.BL

31、答:

(1)CLD

MOVCX.132

MOVAL,20H

LEADI.ARRAY

REPSTOSB

(2)CLD

MOVCX,9

MOVALJ*'

LEADI.ADDR

REPNESCASB

JNELI

L2:……;找到

LI:……;未找到

(3)CLD

MOVCX.3()

MOVAL,20H

LEADI.NAME

REPESCASB

JNEDO_NOT

MOVCX,30

MOVAL.$

LEADI.NAME

REPSTOSB

DONOT:...

(4)CLD

MOVCX.30

LEASI.NAME

LEADI,ARRAY

REPMOVSB

STD

MOVCX,9

LEASI,ADDR+8

LEADI.ARRAY+131

REPMOVSB

34、答:

(I)转LI

(2)转LI

<3)转L2

(4)转L5

(5)转L5

36、答:

2p£q时,(AX)2

2p>q时,(AX)1

38、答:

(1)(AX)=5(BX)=16(CX)=0(DX)=0

(2)(AX)=2(BX)=4(CX>=3(DX)=1

(3)(AX)=3(BX)=7(CX)=2(DX)=0

39、答:

11III11

(SP)->01001

B200

(SP)T0A00OAOO

(SP)->CKO04300430

11111一11111

(1)(2)(3)

11111I11II

(SP)->ocoo

_________

(吁0A00OAOO(SP)->OAOO

0400M0MO

••-

1r1111二1

(4)(5)⑹•

第四章

1、答:

(2)源操作数和目的操作数同为存储器寻址方式。

(3)S【、DI同为变址寄存器。

(7)目的操作数不能是代码段段寄存器CS。

(5)缺乏PTR

5、答:

BYTE-VAR42595445OCEEOO??-OI020102??00??01

020102??00??0102-0102,?

WORD_VAR0000010002000000-0100020000000100

02(X)(X)(X)OI0()02(X)-(X)(X)010()02(X)????

FBFF594245545602-

8、答:PLENTH的值为22(I6H)。

12、答:(1)10025

<2)25

(3)2548

(4)3

(5)103

(6)OFFFFH

(7)1

(8)3

5假设数据段中数据定义如下:

VARDW'34'

VARIDB100,'ABCD'

VAR2DD1

COUNTEQUS-VARl

XDW5DUP(COUNTDUP(Oi)

YLABELWORD

ZDB,123456,

VDW2.$-VAR

执行下面程序段并回答问题。

MOVAX.COUNT;(AX)=?

MOVBX,Z-X;(BX)=?

MOVCX.V+2:(CX)=?

MOVDX.VAR:(DX)=?

MOVY+3,2

MOVSI.Y+4;(SI)=?

ADDZ+5,I

MOVDI,WORDPTRZ+4;(DI)=?

、答:(AX)=9

(BX)=90

(CX)=109

(DX)=3334H

(SI)=36OOH

(DI)=37(X)H

14、答:

(1)(AX)=I

(2)(AX)=2

<3)(CX)-20

(4)(DX)=40

(5)(CX)=I

17、答:

DSEGSEGMENT

D_WORDLABELWORD

AUGENDDD99251

S_WORDLABELWORD

SUMDD?

D_SEGENDS

E_SEGSEGMENT

E_WORDLABELWORD

ADDENDDD-15962

E_SEGENDS

C_SEGSEGMENT

ASSUMECS.C.SEG,DS.D.SEG,ES:E_SEG

MAINPROCFAR

START:PUSHDS

MOVAX.0

PUSHAX

MOVAX,D_SEG

MOVDS.AX

MOVAX.E_SEG

MOVES,AX

MOVAX.D_WORD

MOVBX.D_WORD+2

ADDAX,ES:E_WORD

ADCBX,ES:E_WORD+2

MOVS_WORD,AX

MOVS_WORD+2,BX

RET

MAINENDP

C_SEGENDS

ENDSTART

16、答:

DATASGSEGMENTAT0E000H

WORD.ARRAYLABELWORD

BYTEARRAYDB1OODUPC?)

DATASGENDS

STACKSGSEGMENTPARASTACKSTACK'

DW32DUP(?)

TOSLABELWORD

STACKSGENDS

CODESGSEGMENT

ORGI000H

MAINPROCFAR

ASSUMECS:CODESGDS:DATASGES:DATASG.SS:STACKSG

START:

MOVAX,STACKSG

MOVSS.AX

MOVSP,OFFSETTOS

PUSHDS

SUBAX.AX

PUSHAX

MOVAX.DATASG

MOVDS.AX

MOVES,AX

RET

MAINENDP

CODESGENDS

ENDSTART

9编写一种完整的程序,规定把具有23H,24H,25H,26H四个字符数据的数据区红制20次。

、答:

DSEGSEGMENT

VARIDB23H.24H.25H.26H

DSEGENDS

ESEGSEGMENT

VAR2DB80DUP(?)

ESEGENDS

CSEGSEGMENT

ASSUMECS:CSEG,DS:DSEG,ES:ESEG

MAINPROCFAR

START:

PUSHDS

MOVAX.0

PUSHAX

MOVAX,DSEG

MOVDS.AX

MOVAX,ESEG

MOVES.AX

MOVDX.20

CLD

LEADI,VAR2

AGAIN:

LEASI.VARI

MOVCX,4

REPMOVSB

DECDX

JNZAGAIN

RET

MAINENDP

CSEGENDS

ENDSTART

第五章

1、答:

movex.count

leasi,string!

leadi,string2

again:

moval,[si]

mov[di].al

incsi

incdi

loopagain

2,答:

codesegment

assumecs:code

mainproclar

start:

pushds

movax,0

pushax

movah.I

int2lh

subal.30h

empal.0

jzexit

movcl.ul

movch.0

again:

movah.2

movdl,7

int21h

100Pagain

exit:

rd

mainendp

codeends

endstart

8、答:

MOVCX.8

MOVDL.0

NEXT3:RORAX,1

JNCNEXT1

RORAX.1

JNCNEXT2

INCDL

NEXT2:LOOPNEXT3

ADDDL.3011

MOVAH,2

1NT21H

MOVAH.4CH

1NT21H

NEXT!:RORAX.1

JMPNEXT2

12、答:

movex,100

leadi.mem

movax.0

cld

comp:

repnescasw

jcxzexit

pushex

movsi,di

subdi,2

movbx.di

repniovsw

movwordptr(di|,0

movdi.bx

popex

jmpcomp

exii:

13、答:

movdx,100

movsi.0

repeat:

moval,string]si]

cinpal.3Oh

jbg(x)n

cmpal.39h

jagoon

orcl.20h;(cl)51

jmpexit

goon:

incsi

decdx

jnzrepeat

andcl,Odfli,©)50

exit:

14、答:

tabledwlOOhdup(?)

mdatadw?;寄存出现次数最多的数

countd\v0;寄存出现次数

niovbx,100h

movdi,0;di为数组TABLE的指针

next:

movdx.0

movsi,0

movax.tablc[di]

movex,lOOh

comp:

umpuibk(M],ax

jneaddr

incdx

acklr:

addsi.2

loopcomp

empdx.count

jlechang

movcount,dx

movmdata.ax

chang:

adddi.2

decbx

jnznext

movex,count

movax.mdata

19、答:

adw15dup(?)

bdw20dup(?)

cdw15dup(?)

movsi.0:si为数组A的指针

movbx,0;bx为数组C的指针

movcx,15

kx)pI:

movdi,0;di为数组B的指针

pushex

movex,20

movax.a[si]

Ioop2:

empb|di|.ax

jneno

movc|bx].ax

addbx,2

jmpnext

no:

adddi.2

loopIoop2

next:

addsi.2

popex

looploopI

21、答:.….

movdx.0

leasi,array

movax.[si]

movbx.[si+2]

empax,bx

jncnext!

incdx

ncxli:

umpax

jnenext2

incdx

next2:

empfsi+4|.bx

jnenum

incdx

num:

cmpdx,3

jldisp

decdx

disp:

movah,2

adddl.30h

im2lh

第六章

2、答:

IOO0O1S6

loowiise

ILO501SC

二。二加*

:工匚帆的

2、答:

(l)NAMElNAMELIST<>

(2)MOVAX,DATA:假设构造变量NAME1定义在数据段DATA中

MOVDS,AX

MOVES,AX

MOVAH,10

LEADX,NAME!

INT21H

MOVCL,NAMEI.ACTLEN

MOVCH,0

LEASLNAME1.NAMEIN

LEADI.DISPF1LE

CLD

REPMOVSB

6,答:SKIPLINESPROCNEAR

PUSHCX

PUSHDX

MOVCX,AX

NEXT:MOVAH,2

MOVDL,OAH

INT21H

MOVAH.2

MOVDL,ODH

INT21H

LOOPNEXT

POPDX

POPCX

RET

SKIPLINESENDP

7、答:

dsegsegment

numdw0,3,100.80

ndw10

s6dw0

s7dw0

s8dw0

s9dw0

slOdwO

dsegends

codesegment

mainprocfar

assumecs:code,ds:dseg

start:

pushds

subax.ax

pushax

movax.dseg

movds,ax

cullsubI

ret

maincndp

subIprocnear

pushax

pushbx

pushex

pushsi

movsi,0

movex,n

next:

movax.num[si]

movbx,10

divbl

movbl,al

cbw

subbx.6

salb.x,1

incs6[bx)

addsi,2

loopnext

popsi

popex

popbx

popax

ret

subIendp

ctxlcends

endstart

8,答:

datasegment

maxlcndb40

ndb?

tabicdb40dup(?)

chardb'a';查找字符'a'

even

addrdw3dup(?)

dataends

codesegment

assumecsxodc.ds:dala

mainproctar

start:

pushd$

movax,0

pushax

movax.data

movds.ax

leadx.inaxlcn

movah.Oah

int21h;从键盘接受字符串

movaddr,offsettable

movaddr+2,offsetn

movacidr+4,offsetchar

movbx.offsetaddr;通过地址表传送变量地址

callcount;计算CHAR的出现次数

calldisplay;显示

ret

mainendp

countprocnear;count子程序

pushsi

pushdi

pushax

pushex

inovdi.[bx|

IIIUVsi,[b.x+21

inovcl.byteptr[si]

movch.0

movsi.lbx+41

moval,byteptr[si]

movbx.0

again:

cmpal,byteptr[di|

jnell

incbx

11:incdi

loopagain

popex

popax

popdi

popsi

ret

countendp

displayprocnear;display子'':程序

callcrlf;显示PI车和换行

inovdkchar

movah,2

int2lh

movdl,20h

movah.2

int2lh

moval.bl

andal.Ofh

addal.30h

cmpal,3ah

jiprim

addal,7

print:

movdl,ill

int21h

callcrlf

rcl

displayendp

crlfprocnear:crlf子程序

movdl.Odh

movah.2

int2lh

movdl.Oah

movah.2

int21h

ret

crlfendp

codeends

endstart

第七章

答:CLRBMACRON,ARRAY

CLD

MOVCX,N

MOVAL.20H

LEADl.ARRAY

REPSTOSB

ENDM

2、答:

WAGESMACRORATE.HOUR

MOVAL.RATE

MOVBL,HOUR

MULBL;计算周工资

ADDAX,AX

ADDAX.AX:•种月有4周

MOVWAG,AX:暂存中间成果

ADDBL.BL

ADDBL,BL;计兜月出工小时数

MOVAL,BL

MOVAH,0

MOVBL,10

DIVBL

MOVBL.3

MULBL;计算奖金

ADDWAG.AX:计算工资总数

ENDM

宏展开:

IMOVAL,RI

iMOVBL,42

IMULBL

IADDAX,AX

IADDAX,AX

IMOVWAG.AX

IADDBL,BL

1ADDBL.BL

IMOVAL,BL

1MOVAH,0

IMOVBL,10

IDIVBL

IMOVBL,3

1MULBL

1ADDWAG.AX

3、答:

(1)调用有效IPUSHAX

2MOVAX,PI

2SUBAX.P2

ICMPAX.0

1JGE??0000

INEGAX

1??0000:MOVDISTANCE,AX

IPOPAX

(2)调用有效1PUSHAX

2MOVAXJBX]

2SUBAX.|SI|

ICMPAX,0

IJGE??OOOI

INEGAX

1??0001:MOVX[DILAX

1POPAX

(3)调用无效,有错误指令

1??0002:MOV240H.AX

(4)调用有效,但无意义

宏展开略。

4、答:

SENDMACROSCHARS.DCHARS

LOCALNEXT.EXIT

PUSHAX

PUSHSI

MOVSI.0

NEXT:MOVAL.SCHARS|SI]

MOVDCHARS|SI1,AL

CMPAL,24H

JZEXIT

INCSI

JMPNEXT

EXIT:POPSI

POPAX

ENDM

5、答:

B1N_SUBMACROOPERAND,COUNT,RESULT

LOCALNEXT

LEABX,OPERAND

MOVCX,COUNT

DECCX

MOVAL,|13X]

NEXT:INCBX

SUBAL,|BX]

LOOPNEXT

MOVRESULT,AL

ENDM

7、答:

宏展开:

2DATAODW?

2DATAIDW?

9、答:

IMOVTAB,0

IMOVTAB+1,1

IMOVTAB+2,2

IMOVTAB+3,3

IMOVTAB+4.4

1MOVTAB+5,5

1MOVTAB+6,6

10、答:

STOREMACROX

IRPCX.0123456

MOVTAB+&X.X

ENDM

ENDM

12、答:

FINSUMMACROX,Y,SUM

MOVAX.X

MOVBX.Y

.IFAX>BX

ADDBX.BX

ADDAX,BX

MOVSUM.AX

.ELSE

ADDAX,AX

ADDAX.BX

MOVSUM,AX

.ENDIF

ENDM

14、答:

DOS2IMACRODOSFUNC.BUFF

IFNBaBUI'F?

MOVAH.DOSFUNC

MOVDX.OFFSETBUFF

INT21H

ELSE

MOVAH.DOSFUNC

INT21H

ENDIF

ENDM

展开宏调用:

1MOVAH,01

1INT21H

IMOVAH.OAH

1MOVDX.OFFSETIPFIELD

IINT2IH

第八章

1、答:

(1)OOO48H(2)00020H

2、答:

movah.02

inovdl,'T'

movbx,0

movds.bx

movbx.21h*4

callfarptr(bx|

3、答:

moval.12h

uul25h,al

4、答:

movdx,lOOOh

inax.dx

8、答:

(SP)=OOFA

(SS)=0300

(IP)=0040

(FLAGS)=0040

9、答:

14H*4=50H,/.(00050H)=偏移地址,(00052H)=段地址

10、答:

pushds

movax,segint_rout

inovds.ax

iiiuvdx,ulTselinl_n>ul

inoval,09

movah.25h

int21h

popds

答:D3TD2TD3-D4-D5TD1TD3TD5

13、

答:D3—D2-D4TD5-DITD3-D5

第九章

1、答:

两者不一样点是功能I输入字符可回显,功能8输入字符不回显。

2、答:

dscgscgmcnl

scodedb7,5,9,1,368,0,2,4

bufferdb10dup(?)

dhtgends

csegsegment

mainprocfar

movax.dscg

movds.ax

movsi.O

movex.10

leabx,scode

input:inovah.Ol;键盘输入

int2lh

andal,0fh;ASCnT数字

xlat;换码

movbuffer[si],al;存入缓冲区

incsi;修改地址指针

loopinput:输入卜•种数字

movax.4c00h;返回DOS

ini21h

inaii)endp

esegcuds

endmain

3、答:

(<24行x80)+40歹ij)x2=3920=0F50H

4、答:

movdh,Och;第12行

movdl,08h;第8列

inovbh.0;0页

movah,2;置光标

intlOh;BIOS调用

5、答:

movah.7;屏幕初始化

moval,0;全屏为空格

movbh.()7h:iE常属性

movch,12;左上行

movcl.0;左上列

movdh.22,右下行

movdl,39:右卜列

intIOh;BIOS调用

6、答:

(I)movah,3:读光标位置

movbh.0;页号

intlOh:BIOS调用

⑵mcvdh,18h;第25行

movdl,0;第0列

movbh.0;0页

movah,2:皆光标位苣

intIOh;BIOS调用

(3)movah.2;置光标位置

movbh.0;()贞

movdx,0;(Hl0列

intIOh:BIOS调用

movah,9;显示字符及属性

moval,,M,;字符

movbh,0.0页

movbl,7;正常属性

movex,I;显示次数

intIOh;BIOS调用

7、答:

messagedb'Tryagain,youhave'Countdb'n'

db*starfighterslelt.S5

addcl,30h;二进制数—ASCII

movcount,cl;存入COUNT

leadx,message:字符串地址

movah,09;显示字符串

in(2lh;DOS调用

9、答:

messdb'Whatisthedale(mm/dd/yy)\07,$

datedb10,0,10dup('')

movah,09,显示宇符申

leadx,mess;字符串地址

int2lh

movah,Oah;键盘输入

leadx.dale;缓冲区地址

int2lh

11、答:

MODECOM2:12,N,8,I

第十章

--IO答:

(1)EXYRNSUBPRO:FAR(2)PUBLICSUBPRO

2,答:

(I)PUBLICQTY.VALUE.PRICE

(2)EXTRNQTY:BYTE,VALUE:WORD.PRICE:WORD

3、答:

模块1:

PUBLICVAR1.VAR2.LAB3

模块2:

PUBLICVAR3.LAB2

EXTRNVARIrDWORD.VAR2:BYTE.LABI:NEAR.LAB3:FAR

模块3:

PUBLICLAB3

EXTRNVARI:DWORD.VAR2:BYTE.LABLNEAR.LAB2:I;AR

4、答:

EXTRNSUBMUL:FAR

SSEGSEGMENT

DW64DUP(?)

SSEGENDS

DSEGSEGMENT

QTYDW?

PRICEDW?

DSEGENDS

CSEG1SEGMENT

ASSUMECS:CSEGI,DS:DSEG.SS:SSEG

CALLMULPROCFAR

MOVAX.DSEG

MOVDS,AX

MOVAX.PRICE

MOVBX.QTY

CALLFARPTRSUBMUL

CALLMULENDP

CSEG1ENDS

ENDCALLMUL

PUBLICSUBMUL

CSEG2SEGMENT

ASSUMECS:CSEG2

SUBMULPROCFAR

MULBX

RET

SUBMULENDP

CSEG2ENDS

END

5、答:

ID_SEGSEGMENT

2XDW16DUP(?)

3YDW16DUP(?)

4D_SEGENDS

5E_SEGSEGMENT

6RDW16DUP(?)

7E_SEGENDS

8C_SEGSEGMENT

9ASSUMECS:C_SEGDS:D_SEGES:E_SEG

10MAINPROCFAR

IIMOVAX.DSEG

12MOVDS.AX

13MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论