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

下载本文档

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

文档简介

第二章

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

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

字单元:(30021H)=AB34H,(30022H)=CDABH«

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

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

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

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

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

10E40H

1QF40H

>数据段

卜附加段

20E40H

20F40H

21F00H

卜堆栈段

31F00H

31FF0H

》代码段

41FF0H

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

⑺SS、SP、BP

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

ES、SSo

9、答:唯一正确的是D.

第三章

2、答:

(1)ADDDX,BX

(2)ADDAL,[BX][SI]

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

(4)ADD[0524H],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、答:

(1)1200H

(2)0100H

(3)4C2AH

(4)3412H

(5)4C2AH

(6)7856H

(7)65B7H

6、答:

MOVBX,2000H

LESDI,[BX]

MOVAX,ES:[DI|

7、答:

(1)064DH

(2)0691H

(3)05ECH

9、答:

(1)MOVAX,[BX+OCH]

MOVZERO,AX

(2)MOVAX,ARRAY|BX]

MOVZERO,AX

10、答:

(1)(AX)=1234H

(2)(AX)=OO32H

11、答:

(AX)=1E(K)H

12、答:

LEABX,CSTRING

MOVDL,[BX]

MOVDH,[BX+6]

13、答:

0FFA0:00ACuOF79H

8057H]

__0_FFA0:00AE0FFA0:00AE

OFFAO:OOBO11OFFAO:OOBOFFAO:OOBO

(SP)=OOBOH(SP)=OOACH(SP)=OOAEH

初始态

14、答:

LESBX,[2000]

MOVAX,ES:|BX]

16、答:

(1)74D4HSF=OZF=0CF=0OF=0

(2)A5C1HSF=1ZF=0CF=0OF=1

(3)3240HSF=()ZF=0CF=1OF=()

(4)0000HSF=OZF=1CF=IOF=0

17、答:

(1)0C754HSF=1ZF=OCF=1OF=0

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

(3)45BOHSF=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

IMULX

MOVBX,Y

ADDBX,6

IDIVBX

MOVZ,AX

MOVR,DX

22、答:

NEGDX

NEGAX

SBBDX,0

16、答:

MOVAX,A

MOVDX,A+2

TESTDX,80(X)H

JZSTORE;为正

NEGDX

NEGAX

SBBDX,0

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、答:

(1)(BX)=9AH

(2)(BX)=6IH

(3)(BX)=OFBH

(4)(BX)=1CH

(5)(BX)=0

(6)(BX)—0E3H

26、答:

把①X)(AX)中的双字左移四位(乘以16)o

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*'

LEADLADDR

REPNESCASB

JNEL1

L2:……;找到

LI:……;未找到

(3)CLD

MOVCX,30

MOVAL,20H

LEADI,NAME

REPESCASB

JNEDO.NOT

MOVCX,30

MOVAL,$

LEADLNAME

REPSTOSB

DO.NOT:...

(4)CLD

MOVCX,30

LEASI,NAME

LEADLARRAY

REPMOVSB

STD

MOVCX,9

LEASI,ADDR+8

LEADI,ARRAY+131

REPMOVSB

34、答:

(1)转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、答:

1

(SP)f0100

B200

(SP)7110A00

(SP)T10400104000400

****|**

111111111

(1)(2)(3)

111111111

(SP)一ocoo

(SPA0A000A00(SP)T0A00

040004000400

****|**

11111111

(4)(5)(6)

第四章

1、答:

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

(3)SI、D【同为变址寄存器。

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

(5)缺少PTR

5、答:

BYTE.VAR425954450CEE00??-01020102??00??01

020102??00??0102-0102??

WORD.VAR000001(X)020()00(X)-01000200000001()0

0200000001000200-000001000200????

FBFF594245545602-

8、答:PLENTH的值为22(】6H)。

12、答:(1)10025

(2)25

(3)2548

(4)3

(5)103

(6)OFFFFH

(7)1

(8)3

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

VARDW34'

VARIDB100,'ABCD'

VAR2DD1

COUNTEQU$-VARl

XDW5DUP(COUNTDUP(0))

YLABELWORD

ZDB1123456,

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,1

MOVDI,WORDPTRZ+4;(DI)=?

、答:(AX)=9

(BX)=90

(CX)=)09

(DX)=3334H

(SI)=3600H

(DI)=3700H

14、答:

(1)(AX)=I

(2)(AX)=2

(3)(CX)=20

(4)(DX)=40

(5)(CX)=1

17、答:

D_SEGSEGMENT

D_WORDLABELWORD

AUGENDDD99251

S_WORDLABELWORD

SUMDD?

D.SEGENDS

E_SEGSEGMENT

E_WORDLABELWORD

ADDENDDD-15962

E_SEGENDS

C_SEGSEGMENT

ASSUMECS:C_SEGDS:D_SEGES: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、答:

DA1ASGSEGMENTAT0E000H

WORD_ARRAYLABELWORD

BYTE_ARRAYDB100DUP(?)

DA1ASGENDS

STACKSGSEGMENTPARASTACK'STACK'

DW32DUP(?)

TOSLABELWORD

STACKSGENDS

CODESGSEGMENT

ORG1000H

MAINPROCFAR

ASSUMECS:CODESG,DS:DATASGES:DATASG,SS:S1ACKSG

START:

MOVAX,STACKSG

MOVSS,AX

MOVSROFFSETTOS

PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DA1ASG

MOVDS,AX

MOVES,AX

RET

MAINENDP

CODESGENDS

ENDSTART

9编写•个完整的程序,要求把含有23H,24H,25H,26H四个字符数据的数据区复制20次。

、答:

DSEGSEGMENT

VARIDB23H,24H,25H,26H

DSEGENDS

ESEGSEGMENT

VAR2DB80DUP(?)

ESEGENDS

CSEGSEGMENT

ASSUMECSCSEGDS: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,string1

leadi,string2

again:

moval,[si]

mov[di],al

incsi

incdi

loopagain

2、答:

codesegment

assumecs:code

mainprocfar

start:

pushds

movax,0

pushax

movah,1

int21h

subal,30h

empal,0

jzexit

movcl,al

movch,0

again:

movah,2

movdl,7

int21h

loopagain

exit:

ret

mainendp

codeends

endstart

8、答:

MOVCX,8

MOVDL,0

NEXT3:RORAX,1

JNCNEXT1

RORAX,1

JNCNEXT2

INCDL

NEXT2:LOOPNEXT3

ADDDL,30H

MOVAH,2

INT21H

MOVAH,4CH

INT21H

NEXT1:RORAX,1

JMPNEXT2

12、答:

movex,100

leadi,mem

movax,0

cld

comp:

repnescasw

jexzexit

pushex

movsi,di

subdi,2

movbx,di

repmovsw

movwordptr[di],0

movdi,bx

popex

jmpcomp

exit:

13、答:

movdx,100

movsi,0

repeat:

moval,string[si]

empal,30h

jbgoon

empal,39h

jagoon

orcl,20h;(cl)51

jmpexit

goon:

incsi

deedx

jnzrepeat

andcl,Odfh;(cl)50

exit:

14、答:

tabledwlOOhdup(?)

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

countdwO;存放出现次数

movbx,l(X)h

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

next:

movdx,0

movsi,0

movax,table[di]

movex,lOOh

comp:

emptable[si],ax

jneaddr

incdx

addr:

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的指针

movex,15

loop1:

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

pushex

movex,20

movax,a[si]

loop2:

empb|di],ax

jneno

movc[bx],ax

addbx,2

jmpnext

no:

adddi,2

looploop2

next:

addsi,2

popex

looploop1

21、答:…

movdx,0

leasi,array

movax,[si]

movbx,[si+2]

empax,bx

jnenextI

incdx

nextl:

emp[si+4],ax

jnenext2

incdx

next2:

emp[si+41,bx

jnenum

incdx

num:

empdx,3

jldisp

decdx

disp:

movah,2

adddl,30h

int21h

第六章

2、答:

2、答:

(l)NAMElNAMELIST<>

⑵MOVAX,DATA;假设结构变量NAME1定义在数据段DATA中

MOVDS,AX

MOVES,AX

MOVAH,10

LEADX,NAME1

INT21H

MOVCL,NAME1.ACTLEN

MOVCH,0

LEASI,NAME).NAMEIN

LEADI,DISPFILE

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

numdw76,69,84,90,73,88,99,63,100,80

ndw10

s6dw0

s7dwO

s8dwO

s9dwO

slOdw0

dsegends

codesegment

mainprocfar

assumecs:code,ds:dseg

start:

pushds

subax,ax

pushax

movax,dseg

niovds,ax

callsubl

ret

mainendp

sublprocnear

pushax

pushbx

pushex

pushsi

movsi,0

movex,n

next:

movax,num[si]

movbx,10

divbl

movbl,al

cbw

subbx,6

salbx,1

incs6[bx]

addsi,2

loopnext

popsi

popex

popbx

popax

ret

sublendp

codeends

endstart

8、答:

datasegment

maxlendb40

ndb?

tabledb40dup(?)

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

even

addrdw3dup(?)

dataends

codesegment

assumecs:code,ds:data

mainprocfar

start:

pushds

movax,0

pushax

movax,data

movds,ax

leadx,maxlen

movah,Oah

int21h;从键盘接收字符串

movaddr,offsettable

movaddr+2,offsetn

movaddr+4,offsetchar

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

callcount;计算CHAR的出现次数

calldisplay;显示

ret

mainendp

countprocnear;count子程序

pushsi

pushdi

pushax

pushex

movdi,[bx]

movsi,|bx+2]

movcl,byteptr[si]

movch,0

movsi,[bx+4]

movakbyteptrfsi]

movbx,0

again:

cmpal,byteptr[di|

jne11

incbx

11:incdi

loopagain

popex

popax

popdi

popsi

ret

countendp

displayprocnear;display子程序

callcrlf;显示回车和换行

movdl,char

movah,2

int21h

movdl,20h

movah,2

int21h

moval,bl

andal,Ofh

addah30h

cmpal,3ah

jlprint

addal,7

print:

movdl,al

int2Ih

callcrlf

ret

displayendp

crlfprocnear;crlf子程序

movdl,Odh

movah,2

int21h

movdl,Oah

movah,2

int21h

ret

crlfendp

codeends

endstart

第七章

1、答:CLRBMACRON,ARRAY

CLD

MOVCX,N

MOVAL,20H

LEADI,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

宏展开:

1MOVAL,RI

1MOVBL,42

1MULBL

1ADDAX,AX

1ADDAX,AX

1MOVWAG,AX

1ADDBL,BL

1ADDBL,BL

1MOVAL,BL

1MOVAH,0

1MOVBL,10

1DIVBL

1MOVBL,3

1MULBL

IADDWAG,AX

3、答:

(1)调用有效1PUSHAX

2MOVAX,Pl

2SUBAX,P2

1CMPAX,0

1JGE??0000

1NEGAX

1??0000:MOVDISTANCE,AX

1POPAX

(2)调用有效1PUSHAX

2MOVAX,|BX|

2SUBAX.|SI]

1CMPAX,0

1JGE??0001

1NEGAX

1??0001:MOVX[DI],AX

1POPAX

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

1??0002:MOV240H,AX

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

宏展开略。

4、答:

SENDMACROSCHARS,DCHARS

LOCALNEXT,EXIT

PUSHAX

PUSHSI

MOVSI,0

NEXT:MOVAL,SCHARS|SI|

MOVDCHARS|SI|,AL

CMPAL,24H

JZEXIT

INCSI

JMPNEXT

EXIT:POPSI

POPAX

ENDM

5、答:

BIN_SUBMACROOPERAND,COUNT,RESULT

LOCALNEXT

LEABX,OPERAND

MOVCX,COUNT

DECCX

MOVAL,[BX]

NEXT:INCBX

SUBAL,[BX]

LOOPNEXT

MOVRESULT,AL

ENDM

7、答:

宏展开:

2DA1A0DW?

2DA1A1DW?

9、答:

1MOVT\B,0

1MOV17XB+1,1

1MOV1AB+2,2

1MOV1AB+3,3

1MOV1AB+4,4

1MOV1AB+5,5

1MOV1AB+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、答:

DOS21MACRODOSFUNC,BUFF

IFNBaBUFF?

MOVAH,DOSFUNC

MOVDX,OFFSETBUFF

INT21H

ELSE

MOVAH,DOSFUNC

INT2IH

ENDIF

ENDM

展开宏调用:

1MOVAH,01

1INT21H

1MOVAH,0AH

1MOVDX,OFFSETIPFIELD

1INT21H

第八章

1、答:

(1)00048H(2)00020H

2、答:

movah,02

movdl,T

movbx,0

movds,bx

movbx,21h*4

callfarptr[bx]

3、答:

moval.12h

out25h,al

4、答:

movdx,lOOOh

inax,dx

8、答:

(SP)=OOFA

(SS)=0300

(IP)=0040

(FLAGS)=0040

9、答:

I4H*4=5OH,I.(00050H)=偏移地址,(00052H)=段地址

10、答:

pushds

movax,segint_rout

movds,ax

movdx,offsetint_rout

moval,09

movah,25h

int21h

popds

12、

答:D3TD2—D3-D4-D5TD1-D3->D5

13、

答:D3一D2-D41D5一DI一D3一D5

第九章

1、答:

二者不同点是功能1输入字符可回显,功能8输入字符不回显。

2、答:

dsegsegment

scodedb7,5,9,1,3,6,80,2,4

bufferdb10dup(?)

dsegends

csegsegment

mainprocfar

movax,dseg

movds,ax

movsi,0

movex,10

leabx,scode

input:movah,01;键盘输入

int21h

andal,Ofh;ASCII1数字

xlat;换码

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

incsi;修改地址指针

loopinput;输入下一个数字

movax,4c00h;返回DOS

int21h

mainendp

csegends

endmain

3、答:

((24行x80)+40列)x2=3920=0F50H

4、答:

movdh,Och;第12行

movdl,08h;第8歹!]

movbh,0;0页

movah,2;置光标

intlOh;BIOS调用

5、答:

movah,7;屏幕初始化

moval,0;全屏为空格

movbh,07h;正常属性

movch,12;左上行

movcl,0;左上列

movdh,22;右下行

movdl.39;右下列

intlOh;BIOS调用

6、答:

(1)movah,3;读光标位置

movbh,O;页号

intlOh;BIOS调用

(2)movdh,18h悌25行

movdl,0;第0列

movbh,0;0页

movah,2;置光标位置

intlOh;BIOS调用

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

movbh,0;0页

movdx,0;0行0列

intlOh;BIOS调用

movah,9;显示字符及属性

moval,;字符

movbh,0;0页

movbl,7;正常属性

movex,1;显示次数

intlOh:BIOS调用

7、答:

messagedb"Tryagain,youhave'Countdb'n'

db4starfighters

addcl,3Oh;二进制数1ASCH

movcount,cl;存入COUNT

leadx,messager字符串地址

movah,09;显示字符串

int2Ih;DOS调用

9、答:

messdb4Whatisthedate(mm/dd/yy)',07,$

datedb10,0,10dupC')

movah,09;显示字符串

leadx,mess;字符串地址

int2Ih

movah,Oah;键盘输入

leadx,date;缓冲区地址

int21h

11、答:

MODECOM2:12,N,8,1

第十章

、1O答:

(1)EXYRNSUBPRO:FAR(2)PUBLICSUBPRO

2、答:

(1)PUBLICQTYVALUE,PRICE

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

3、答:

模块1:

PUBLICVARI,VAR2,LAB3

模块2:

PUBLICVAR3,LAB2

EXTRNVARkDWORD,VAR2:BYTE,LAB1:NEAR,LAB3:FAR

模块3:

PUBLICLAB3

EXTRNVAR1:DWORD,VAR2:BYTE,LABI:NEAR,LAB2:FAR

4、答:

EXTRNSUBMUL:FAR

SSEGSEGMENT

DW64DUP(?)

SSEGENDS

DSEGSEGMENT

QTYDW?

PRICEDW?

DSEGENDS

CSEG1SEGMENT

ASSUMECS:CSEG1,DS:DSEGSS: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、答:

1D_SEGSEGMENT

2XDW16DUP(?)

3YDW16DUP(?)

4D_SEG

温馨提示

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

最新文档

评论

0/150

提交评论