汇编语言程序设计第二版 沈美明 温冬婵 编著.docx

上传人:b****5 文档编号:12278809 上传时间:2023-04-17 格式:DOCX 页数:34 大小:23.42KB
下载 相关 举报
汇编语言程序设计第二版 沈美明 温冬婵 编著.docx_第1页
第1页 / 共34页
汇编语言程序设计第二版 沈美明 温冬婵 编著.docx_第2页
第2页 / 共34页
汇编语言程序设计第二版 沈美明 温冬婵 编著.docx_第3页
第3页 / 共34页
汇编语言程序设计第二版 沈美明 温冬婵 编著.docx_第4页
第4页 / 共34页
汇编语言程序设计第二版 沈美明 温冬婵 编著.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

汇编语言程序设计第二版 沈美明 温冬婵 编著.docx

《汇编语言程序设计第二版 沈美明 温冬婵 编著.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计第二版 沈美明 温冬婵 编著.docx(34页珍藏版)》请在冰豆网上搜索。

汇编语言程序设计第二版 沈美明 温冬婵 编著.docx

汇编语言程序设计第二版沈美明温冬婵编著

汇编语言程序设计(第二版)

(清华大学IBM-PC汇编语言程序设计(第二版)沈美明 温冬婵编著)

                                          第二章

1、     答:

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

2、答:

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。

7、答:

(1)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,[BX][SI]

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

(4)ADD[0524H],2A59H

(5)ADDAL,0B5H

3、答:

(1)MOVBX,OFFSETBLOCK+0AH

   MOVDX,[BX]

(2)MOVBX,0AH

   MOVDX,BLOCK[BX]

(3)MOVBX,OFFSETBLOCK

   MOVSI,0AH

   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+0CH]

   MOVZERO,AX

(2)MOVAX,ARRAY[BX]

   MOVZERO,AX

10、答:

(1)(AX)=1234H

(2)(AX)=0032H

11、答:

(AX)=1E00H

12、答:

LEABX,CSTRING

MOVDL,[BX]

MOVDH,[BX+6]

13、答:

14、答:

LESBX,[2000]

MOVAX,ES:

[BX]

16、答:

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

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

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

(4)0000HSF=0ZF=1CF=1OF=0

17、答:

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

(2)12B0HSF=0ZF=0CF=0OF=0

(3)45B0HSF=0ZF=0CF=0OF=1

(4)9F24HSF=1ZF=0CF=0OF=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,8000H

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)=61H

(3)(BX)=0FBH

(4)(BX)=1CH

(5)(BX)=0

(6)(BX)=0E3H

26、答:

把(DX)(AX)中的双字左移四位(乘以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

   MOVAL,‘*’

   LEADI,ADDR

   REPNESCASB

   JNEL1

   L2:

……;找到

   L1:

……;未找到

(3)CLD

   MOVCX,30

   MOVAL,20H

   LEADI,NAME

   REPESCASB

   JNEDO_NOT

   MOVCX,30

   MOVAL,‘$’

   LEADI,NAME

   REPSTOSB

   …

   DO_NOT:

(4)CLD

   MOVCX,30

   LEASI,NAME

   LEADI,ARRAY

   REPMOVSB

   STD

   MOVCX,9

   LEASI,ADDR+8

   LEADI,ARRAY+131

   REPMOVSB

34、答:

(1)转L1

(2)转L1

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

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

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

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

(5)缺少PTR

5、答:

BYTE_VAR425954450CEE00?

?

-01020102?

?

00?

?

01

020102?

?

00?

?

0102-0102?

?

WORD_VAR0000010002000000-0100020000000100

0200000001000200-000001000200?

?

?

?

FBFF594245545602-

8、答:

PLENTH的值为22(16H)。

12、答:

(1)10025

(2)25

(3)2548

(4)3

(5)103

(6)0FFFFH

(7)1

(8)3

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

VARDW'34'

VAR1DB100,'ABCD'

VAR2DD1

COUNTEQU$-VAR1

XDW5DUP(COUNTDUP(0))

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

MOVDI,WORDPTRZ+4;(DI)=?

、答:

(AX)=9

(BX)=90

(CX)=109

(DX)=3334H

(SI)=3600H

(DI)=3700H

14、答:

(1)(AX)=1

(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_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

BYTE_ARRAYDB100DUP(?

DATASGENDS

STACKSGSEGMENTPARASTACK'STACK'

DW32DUP(?

TOSLABELWORD

STACKSGENDS

CODESGSEGMENT

ORG1000H

MAINPROCFAR

ASSUMECS:

CODESG,DS:

DATASG,ES:

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

VAR1DB23H,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,VAR1

MOVCX,4

REPMOVSB

DECDX

JNZAGAIN

RET

MAINENDP

CSEGENDS

ENDSTART

第五章

1、答:

……

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

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

……

movcx,100

leadi,mem

movax,0

cld

comp:

repnescasw

jcxzexit

pushcx

movsi,di

subdi,2

movbx,di

repmovsw

movwordptr[di],0

movdi,bx

popcx

jmpcomp

exit:

……

13、答:

……

movdx,100

movsi,0

repeat:

moval,string[si]

cmpal,30h

jbgoon

cmpal,39h

jagoon

orcl,20h;(cl)51

jmpexit

goon:

incsi

decdx

jnzrepeat

andcl,0dfh;(cl)50

exit:

……

14、答:

……

tabledw100hdup(?

mdatadw?

;存放出现次数最多的数

countdw0;存放出现次数

……

movbx,100h

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

next:

movdx,0

movsi,0

movax,table[di]

movcx,100h

comp:

cmptable[si],ax

jneaddr

incdx

addr:

addsi,2

loopcomp

cmpdx,count

jlechang

movcount,dx

movmdata,ax

chang:

adddi,2

decbx

jnznext

movcx,count

movax,mdata

……

19、答:

……

adw15dup(?

bdw20dup(?

cdw15dup(?

……

movsi,0;si为数组A的指针

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

movcx,15

loop1:

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

pushcx

movcx,20

movax,a[si]

loop2:

cmpb[di],ax

jneno

movc[bx],ax

addbx,2

jmpnext

no:

adddi,2

looploop2

next:

addsi,2

popcx

looploop1

21、答:

……

movdx,0

leasi,array

movax,[si]

movbx,[si+2]

cmpax,bx

jnenext1

incdx

next1:

cmp[si+4],ax

jnenext2

incdx

next2:

cmp[si+4],bx

jnenum

incdx

num:

cmpdx,3

jldisp

decdx

disp:

movah,2

adddl,30h

int21h

……                                          第六章

2、     答:

2、答:

(1)NAME1NAMELIST<>

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

MOVDS,AX

MOVES,AX

MOVAH,10

LEADX,NAME1

INT21H

MOVCL,NAME1.ACTLEN

MOVCH,0

LEASI,NAME1.NAMEIN

LEADI,DISPFILE

CLD

REPMOVSB

6、答:

SKIPLINESPROCNEAR

PUSHCX

PUSHDX

MOVCX,AX

NEXT:

MOVAH,2

MOVDL,0AH

INT21H

MOVAH,2

MOVDL,0DH

INT21H

LOOPNEXT

POPDX

POPCX

RET

SKIPLINESENDP

7、答:

dsegsegment

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

ndw10

s6dw0

s7dw0

s8dw0

s9dw0

s10dw0

dsegends

codesegment

mainprocfar

assumecs:

code,ds:

dseg

start:

pushds

subax,ax

pushax

movax,dseg

movds,ax

callsub1

ret

mainendp

sub1procnear

pushax

pushbx

pushcx

pushsi

movsi,0

movcx,n

next:

movax,num[si]

movbx,10

divbl

movbl,al

cbw

subbx,6

salbx,1

incs6[bx]

addsi,2

loopnext

popsi

popcx

popbx

popax

ret

sub1endp

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,0ah

int21h;从键盘接收字符串

movaddr,offsettable

movaddr+2,offsetn

movaddr+4,offsetchar

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

callcount;计算CHAR的出现次数

calldisplay;显示

ret

mainendp

countprocnear;count子程序

pushsi

pushdi

pushax

pushcx

movdi,[bx]

movsi,[bx+2]

movcl,byteptr[si]

movch,0

movsi,[bx+4]

moval,byteptr[si]

movbx,0

again:

cmpal,byteptr[di]

jnel1

incbx

l1:

incdi

loopagain

popcx

popax

popdi

popsi

ret

countendp

displayprocnear;display子程序

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

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

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

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