第2章 指令系统及汇编语言程序设计答案.docx

上传人:b****7 文档编号:11390826 上传时间:2023-02-28 格式:DOCX 页数:18 大小:23.92KB
下载 相关 举报
第2章 指令系统及汇编语言程序设计答案.docx_第1页
第1页 / 共18页
第2章 指令系统及汇编语言程序设计答案.docx_第2页
第2页 / 共18页
第2章 指令系统及汇编语言程序设计答案.docx_第3页
第3页 / 共18页
第2章 指令系统及汇编语言程序设计答案.docx_第4页
第4页 / 共18页
第2章 指令系统及汇编语言程序设计答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

第2章 指令系统及汇编语言程序设计答案.docx

《第2章 指令系统及汇编语言程序设计答案.docx》由会员分享,可在线阅读,更多相关《第2章 指令系统及汇编语言程序设计答案.docx(18页珍藏版)》请在冰豆网上搜索。

第2章 指令系统及汇编语言程序设计答案.docx

第2章指令系统及汇编语言程序设计答案

第2章指令系统及汇编语言程序设计

一.选择题

1.(D)2.(A)3.(C)4.(D)5.(A)6.(D)

7.(C)8.(C)9.(C)10.(D)11.(D)12.(C)

13.(C)14.(A)15.(A)16.(D)17.(B)18.(C)

19.(C)20.(C)21.(D)22.(D)23.(D)24.(C)

25.(A)26.(A)27.(B)28.(C)29.(B)30.(D)

31.(B)32.(C)33.(C)34.(A)35.(C)36.(D)

37.(D)38.(A)39.(B)40.(C)41.(D)42.(D)

43.(B)44.(C)45.(C)46.(B)47.(B)48.(D)

49.(A)50.(B)51.(A)52.(C)

二、判断题

1.×2.×3.×4.√5.√6.√7.×8.×9.×

10.√11.×12.×13.×14.×15.×16.√17.√18.√

19.×20.×21.×22.√23.×24.√25.√26.√

三、填空题

1.53F30H

2.0;0;0;1

3.操作码;操作数

4.ZF=0

5.SS

6.1234H,0FFEH

7.立即

四、阅读程序

1.38(或26H)

2.将以10100H起始的50个单元的内容传送至以10200H起始的50个单元中

3.将数据段中以2000H起始的100个单元中的内容清零

4.统计以BUFFER为首址的100个单元中数字为1的个数存入ARRAY单元

5.统计N字中0的个数

6.将N的内容拆为两部分分别存入BH,BL中

7.AX=0008H

8.AL=34H

9.AX=23H

10.AX=0004H

11.AX=0055H

12.将从键盘接受到的两个字符拼在一起

13.BH=0FFH,BL=0EH

14.AX=000FH

15.AL=15H,AF=1,BL=0FH

16.90H

17.向屏幕上依次输出0,1,…。

9

18.AL=68H,CL=CEH

19.AX=0705H

20.

1①             AX=0007H,BX=0014H,CX=0,DX=0

②AX=0007H,BX=0014H,CX=0,DX=0

③AX=0005H,BX=0007H,CX=0002H,DX=0002H

21.程序的功能是:

统计以BUFFER为起始地址的100个单元中偶数的个数。

22.①35H②将十六进制数转换为ASCII码

23.①12H②3412H

24.程序的功能是:

求从1开始的50个奇数之和。

25.(如下图)

           

    26.①、0000H②、0002H

    27.AL=90H

    28.DI=0000HBP=0002H

    29.AL=90H

    30.①AL=0FCH②BL=1

 

五.程序填空

1.①、LOOPLOOP1②、POPAX;MOVDL,AL

 

六、编写程序

1.在STR到STR+49单元中存放着一个字符串,试编写一个程序,测试字符串中是否存在数字,如有,则把DL的第五位置1,否则将该位置0。

DATASEGMENT

STR1DB50DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

MAINPROCFAR

START:

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

BEGIN:

MOVCX,50

MOVSI,0

REP1:

MOVAL,STR1[SI]

CMPAL,30H

JBGO

CMPAL,39H

JAGO

ORDL,20H

JMPEXIT

GO:

INCSI

LOOPREP1

ANDDL,0DFH

EXIT:

RET

MAINENDP

CODEENDS

ENDSTART

2.试编程实现,从键盘接收N个(N≤60)8位二进制数,统计其中奇数的个数,并将结果显示在屏幕上。

DATASEGMENT

KEYDB61

KEY1DB?

KEY2DB61DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETKEY

MOVAH,0AH

INT21H

MOVAL,0

LEASI,KEY2

MOVCH,0

MOVCL,KEY1

LP0:

MOVBL,[SI]

TESTBL,01H

JZLP1

ADDAL,01H

DAA

LP1:

INCSI

LOOPLP0

MOVBL,AL

MOVCL,4

SHRAL,CL

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

ANDBL,0FH

ADDBL,30H

MOVDL,BL

MOVAH,02H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.已知有100字节的数据块存放在以5C10H:

2000H开始的存储区内,要求编写一个完整程序将数据移动到以5C10H:

2008H开始的存储区内。

参考程序

CODESEGMENT

ASSUMECS:

CODE

MAIN:

MOVAX,5C10H

MOVES,AX

MOVDS,AX

MOVSI,2063H

MOVDI,206BH

STD

MOVCX,100

REPMOVSB

MOVAH,4CH

INT21H

CODEENDS

ENDMAIN

4.数组A包含100个互不相等的整数,数组B包含150个互不相等的整数,试编程实现将数组A和数组B都有的整数存放在数组C中。

参考程序

DATSEGMENT

ADB100DUP(?

BDB150DUP(?

CDB150DUP(?

NDW00H

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT,ES:

DAT

START:

MOVAX,DAT

MOVDS,AX

MOVES,AX

CLD

LEASI,B

MOVDX,150

LP0:

MOVCX,100

LEADI,A

MOVAL,[SI]

REPNZSCASB

JNZLP1

LEABX,C

ADDBX,N

MOV[BX],AL

INCN

LP1:

INCSI

DECDX

JNZLP0

MOVAX,004CH

INT21H

CODENDS

ENDSTART

5.在以BASE起始的表中存有一组字符,它以‘回车’(0DH)结束。

请编写程序:

实现从该表中查找关键字KEY(设关键字KEY在AL中),并将找到的第一个关键字偏离表首的位置存放在寄存器DX中,若无此关键字,DX返回值为-1。

LEADI,BASE

MOVDX,-1

LOP:

MOVBL,[DI]

CMPBL,0DH

JZDONE

CMPBL,AL

JZLOP1

INCDI

JMPLOP

LOP1:

MOVDX,DI

DONE:

HLT

6.编写一个中断程序,实现人机对话。

要求执行程序时,显示‘WHATISYOURNAME?

’,在回车换行后,接收键盘输入信息,并显示。

(提示:

使用09H和0AH功能调用)

DATASEGMENT

BUFDB81

DB?

DB81DUP(?

MESGDB‘WHATISYOURNAME?

’,0AH,0DH

DB$

DATAENDS

STACKSEGMENTPARASTACK‘STACK’

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

STARTPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

DISP:

MOVDX,OFFSETMESG

MOVAH,09H

INT21H

KEYBI:

MOVDX,OFFSETBUF

MOVAX,0AH

INT21H

LF:

MOVDL,0AH

MOVAH,02H

INT21H

DISTR:

MOVDX,OFFSETBUF+2

MOVAH,09H

INT21H

RET

STARTENDP

CODEENDS

ENDSTART

7.编写程序找出BUF数据区中50个带符号数的最大值和最小值,并分别存入MAX和MIN单元。

参考程序如下:

DATASEGMENT

BUFDB50DUP(?

MAXDB?

MINDB?

CONTEQU$-BUF

DATAENDS

STACKSEGMENT

TPDB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

MAINPROCFAR

START:

PUSHDS

SUBAX,AX

PUSHAX

MOVDS,AX

LEABX,BUF

MOVCX,CONT-1

MOVAL,[BX]

MOVAH,[BX+1]

INCBX

CMPAH,AL

JGELOP1

XCHGAH,AL

LOP1:

INCBX

CMPAH,[BX]

JGELIS

XCHGAH,[BX]

JMPLOP2

LIS:

CMPAL,[BX]

JLELOP2

XCHGAL,[BX]

LOP2:

LOOPLOP1

MOVMAX,AH

MOVMIN,AL

RET

MAINENDP

CODEENDS

ENDSTART

8.试编程实现从键盘接收N个(N≤50)8位二进制数,统计偶数的个数及偶数之和,并将统计的个数以十进制方式显示在屏幕上。

DATASEGMENT

KEY1DB51

KEY2DB?

KEY3DB51DUP(?

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

MAIN:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETKEY1

MOVAH,0AH

INT21H

LEABX,KEY3

XORDX,DX

MOVCL,KEY2

MOVCH,0

LP0:

MOVAL,[SI]

TESTAL,01H

JNZLP

ADDBL,AL

MOVAL,BH

ADDAL,1

DAA

MOVBH,AL

LP:

INCSI

LOOPLP0

SHLAL,4

ADDAL,30H

MOVDL,AL

MOVAH,01

INT21H

ANDBH,0FH

MOVDL,30H

ADDDL,BH

MOVAH,1

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDMAIN

9.以STRING起始的字符串的最大长度为80个字符,字符串的结束用字符$表示。

编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格字符串中的位置(00H~4FH)存入POST单元;若无空格则将-1存入POST。

LEABX,STRING

MOVCX,80

NEXT1:

MOVAL,[BX]

CMPAL,’$’

JZDONE

CMPAL,20H

JZNEXT

INCBX

LOOPNEXT1

JMPDONE

NEXT:

MOVPOST,BL

JMPEND1

DONE:

MOVPOST,0FFH

END1:

……

10.BUFFER字节数组中存有一组无序列字节数数据,列的长度表示在BUFFER的第一个字节中KEY中为一个字节数据,编写程序在BUFFER中查找有无KEY,若有就结束,若没有就将KEY加入到BUFFER中去,并修改列的长度。

LEASI,BUFFER

MOVCL,[SI]

INCSI

XORCH,CH

NEXT:

MOVAL,[SI]

CMPAL,KEY

JZDONE

INCSI

LOOPNEXT

MOVAL,KEY

MOV[SI],AL

INCBYTEPTRBUFFER

DONE:

………。

11.利用移位及数据循环指令完成将DHAL中的16位二进制乘以8的运算,结果仍存入DHAL中。

MOVCX,3

NEXT:

SHLAL,1

RCLDH,1

LOOPNEXT

MOVAH,4CH

INT21H

12.分别从键盘上接收两长度相等的组数A和B,试完成两数组的求和任务,将结果存放在数组C中,并显示在屏幕上。

DATASEGMENT

A0DB80

A1DB?

ADB80DUP(?

B0DB80

B1DB?

BDB80DUP(?

CDB80DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

MAIN:

MOVAX,DATA

MOVDS,AX

LEADX,A0

MOVAH,0AH

INT21H

LEADX,B0

MOVAH,0AH

INT21H

CLC

LEASI,A

LEABX,B

LEADI,C

MOVCL,A1

XORCH,CH

NEXT:

MOVAL,[SI]

ADCAL,[BX]

MOV[DI],AL

INCBX

INCSI

INCDI

LOOPNEXT

MOVCL,A1

XORCH,CH

LEADI,C

N0:

MOVDL,[DI]

SHLDL,4

ADDDL,30H

CMPDL,39H

JNCN1

ADDDL,07H

N1:

MOVAH,01H

INT21H

AND[DI],0FH

MOVDL,[DI]

ADDDL,30H

CMPDL,39H

JNCN2

ADDDL,07H

N2:

MOVAH,01H

INT21H

INCDI

LOOPN0

MOVAH,4CH

INT21H

CODEENDS

ENDMAIN

13.编写程序,将键盘输入的小写字母用大写字母显示出来。

AGAIN:

MOVAH,2

INT21H

ANDAL,11011111B

MOVDL,AL

MOVAH,1

INT21H

JMPAGAIN

14.要求从键盘接收一个十进制数字,然后找出它的前导数字和后继数字,并按相反的顺序显示输出。

MOVAH,2

INT21H

MOVCL,AL

INCAL

MOVDL,AL

MOVAH,1

INT21H

MOVDL,CL

MOVAH,1

INT21H

DECCL

MOVDL,CL

MOVAH,1

INT21H

15.设在变量X、Y、Z中存放有三个数,若三个数都不为0,则求出三个数之和存入U中,若有一个为0,则将其它两个单元也清零,编写此程序。

MOVAL,X

ANDAL,AL

JNZNEXT

ORAL,Y

JZDONE

CMPZ,0

JZDONE

MOVY,0

MOVZ,0

JMPDONE

NEXT:

CMPY,0

JNZNEXT1

CMPZ,0

JZDONE

MOVX,0

MOVZ,0

JMPDONE

NEXT1:

CMPZ,0

JNZNEXT2

MOVX,0

MOVY,0

JMPDONE

NEXT2:

ADDAL,Y

ADDAL,Z

MOVU,AL

DONE:

……

16.求出首地址为DATA的M个字节的无符号数组中最小奇数,并把它存放于DL中。

LEABX,DATA

MOVCX,M

MOVAH,01H

AGAIN:

MOVAL,[BX]

TESTAL,0FFH

JZNEXT

CMPAH,AL

JNCNEXT

MOVAH,AL

NEXT:

INCBX

LOOPAGAIN

MOVDL,AL

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

当前位置:首页 > 工作范文 > 演讲主持

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

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