汇编复习.docx

上传人:b****6 文档编号:8700453 上传时间:2023-02-01 格式:DOCX 页数:14 大小:21.09KB
下载 相关 举报
汇编复习.docx_第1页
第1页 / 共14页
汇编复习.docx_第2页
第2页 / 共14页
汇编复习.docx_第3页
第3页 / 共14页
汇编复习.docx_第4页
第4页 / 共14页
汇编复习.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编复习.docx

《汇编复习.docx》由会员分享,可在线阅读,更多相关《汇编复习.docx(14页珍藏版)》请在冰豆网上搜索。

汇编复习.docx

汇编复习

1、设有字节数组X,X数组中有X1,…,X10,十个无符号数。

要求计算:

Z1=2*X1Z2=2*X2Z3=X3/2

Z4=2*X4Z5=X5/2Z6=2*X6

Z7=2*X7Z8=X8/2Z9=X9/2

Z10=2*X10

结果存入字节Z数组。

(不考虑溢出等情况)

①要实现上述要求,应该使用哪个编程技术?

如何设置标志?

②正确定义数据段

③试编制一完整的汇编源程序实现上述要求。

①要实现上述要求,应该使用逻辑尺。

用0表示乘法,用1表示除法。

则逻辑尺设置为0110010100B,即0194H。

(3分)

②数据段定义为:

DATASEGMENT

XDBX1,X2,X3,X4,X5,X6,X7,X8,X9,X10

ZDBZ1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10

LRDB0194H

DATAENDS

数据段定义正确2分。

③源程序如下:

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,0

MOVCX,10

MOVDX,LR

NEXT:

MOVAL,X[BX]

SHRDX,1

JCDIVTRACT

SHLAL,1

JMPSHORTRESULT

DIVTRACT:

SHRAL,1

RESULT:

MOVZ[BX],AL

INCBX

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2、编写一完整的汇编程序,完成的功能如下:

向内存0030H:

0H~0030H:

003FH中依次传送数据0~63D(3FH)。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAX,0030H

MOVDS,AX

MOVBX,0

MOVDL,0

MOVCX,40H;MOVCX,64

NEXT:

MOV[BX],DL

INCDL

INCBX

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3、编写一完整的汇编源程序,其功能是将压缩BCD码转化为对应的两个ASCII码。

DATASEGMENT

BCDDB12H,34H,56H,78H,90H

ASCDB10DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCL,4

MOVBX,0

MOVSI,0

MOVDI,5

AGAIN:

MOVCH,2

MOVAL,BCD[BX]

NEXT:

ROLAL,CL

MOVAH,AL

ANDAH,0FH

ORAH,30H

MOVASC[SI],AH

INCSI

DECCH

JNZNEXT

INCBX

DECDI

JNZAGAIN

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

4、写出执行Z←(W*X+Z)/(Y+6),Y←余数计算的指令序列,其中W,X,Y和Z均为存放16位带符号数单元的地址。

MOVAX,W

IMULX

MOVCX,AX

MOVBX,DX

MOVAX,Z

CWD

ADDAX,CX

ADCDX,BX

ADDY,6

IDIVY

MOVZ,AX

MOVY,DX

5、试编写一段汇编语言指令序列,其功能是求1到400之间所有正整数之和。

MOVAX,0

MOVBX,1

MOVCX,400

NEXT:

ADDAX,BX

INCBX

LOOPNEXT

 

6、试编制一段汇编语言指令序列,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。

LEADI,DA_BY

MOVCX,32

MOVAL,‘Y’

CLD

REPSTOSB

7、X、Y是双精度数,分别存于DX,AX及BX,CX中,下面的程序段的功能是实现两数的比较,当X>Y时转L1,否则转L2。

试在程序的空缺处填补上适合的指令。

(每空只能填一条指令)

CMPDX,BX

JGL1

JLL2

CMPAX,CX

JAL1

L2:

……

L1:

……

8、已知(AX)=0A33AH,(DX)=0F0F0H

ANDAH,DL

XORAL,DH

NEGAH

NOTAL

执行上述指令序列后,(AL)=,(AH)=。

(AL)=35H,(AH)=60H

9、下面程序的功能是将压缩BCD码转化为对应的两个ASCII码。

试在程序的空缺处填补上适合的指令。

(每空只能填一条指令)

DATASEGMENT

BCDDB12H,34H,56H,78H,90H

ASCDB10DUP(?

DATAENDS

 

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCL,4

MOVBX,0

MOVSI,0

MOVDI,5

AGAIN:

MOVCH,2

MOVAL,BCD[BX]

NEXT:

ROLAL,CL

MOVAH,AL

ANDAH,0FH

ORAH,30H

MOVASC[SI],AH

INCSI

DECCH

JNZNEXT

INCBX

DECDI

JNZAGAIN

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

10、设X,Y均为无符号16位数据,用程序完成表达式X2+Y的计算。

试在程序的空缺处填补上适合的指令。

(每空只能填一条指令)

VARYDWX,Y

RESULTDW?

,?

……

MOVAX,VARY

MULAX

ADDAX,VARY+2

ADCDX,0

MOVRESULT,AX

MOVRESULT+2,DX

……

11、下面的程序段是用以完成统计一个数组中为奇数的数目,统计结果存放在RESULT单元中。

试在程序的空缺处填补上适合的指令。

(每空只能填一条指令)

ARRAYDBx1,x2,x3,……,xn

NNDBN

RESULTDB?

……

MOVCX,NN

LEASI,ARRAY

LOP:

TESTBYTEPTR[SI],01H

JZNEXT

INCRESULT

NEXT:

INCSI

LOOPLOP

……

 

12、下面的程序的功能是统计BX中1的个数。

请在程序的空缺处填

补上适合的指令。

XORAL,AL

AGAIN:

TESTBX,OFFFFH

JENEXT

SHLBX,1

JNCAGAIN

INCAL

JMPAGAIN

NEXT:

……

该程序段采用的是什么循环控制?

本程序段采用的是特征值控制。

13、有程序如下:

DATASEGMENT

SRCDB1,2,3,4,5,6,7,8,9,10

DESTDB10DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA

START:

MOVAX,DATA

MOVES,AX

MOVDS,AX

MOVCX,10

LEASI,SRC

LEADI,DEST

CLD

REPMOVSB

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

其中LEASI,SRC完成的功能是什么?

可以用什么指令来替换?

CLD功能是什么?

指令LEASI,SRC完成的功能是将SRC的偏移地址传递给SI。

可以用指令MOVSI,OFFSETSRC来替换。

指令CLD的功能是将DF标志位清零。

14、分析下面程序段:

……

CALLINPUT

MOVDL,AL

CALLINPUT

ADDAL,DL

……

INPUTPROCNEAR

REPEAT:

MOVAH,01H

INT21H

SUBAL,30H

JLREPEAT

CMPAL,9

JGREPEAT

RET

INPUTENDP

……

试问上述程序段完成什么功能?

另外,INPUTPROCNEAR语句中的NEAR表示什么含义?

该程序段的功能是通过调用子程序,从键盘输入两个十进制数后,进行相加,结果存于AL中。

INPUTPROCNEAR语句中的NEAR表示该子程序与主程序在同一代码段中。

15、在以ARRAY为首地址的内存区域中存放了一组无符号数,下面程序段的功能是找出该数组中的最大数,并将其存放到MAX单元,试在程序的空缺处填补上适合的指令。

(每空只能填一条指令)

ARRAYDW0190H,3098H,00FAH,……,1A07H

DW—1

MAXDW?

……

MOVAX,0

MOVBX,0

AGAIN:

CMPARRAY[BX],—1

JEEXIT

CMPAX,ARRAY[BX]

JAENEXT

MOVAX,ARRAY[BX]

NEXT:

INCBX

JMPAGAIN

EXIT:

……

16、有程序段如下:

BLK1DB2EH,54H,22H,—5,20,122,73

……

MOVCX,7

LEASI,BLK1

NEXT:

MOVAL,[SI]

INCSI

TESTAL,81H

LOOPZNEXT

MOVBL,[SI]

……

请回答程序段运行后:

(AL)=,(BL)=。

(AL)=—5,(BL)=14H。

 

17、根据中断源,可以将中断分为哪两大类?

请简述中断指令对标志位的影响。

根据中断源,可以将中断分为外中断(硬中断)和内中断(软中断)。

中断指令把IF和TF置0,但不影响其它标志位。

中断向量及中断向量表的地址和内容的计算。

18、什么是寻址方式?

8086/8088微处理器的寻址方式中与数据有关的寻址方式有哪几个?

寻址方式就是寻找指令中操作数的方式,或寻找指令转移目的地址的方式。

8086/8088微处理器的寻址方式中与数据有关的寻址方式有立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址。

19、CPU是由哪几部分构成的?

请简述各部分的主要功能。

CPU是有算术逻辑部件、控制器和寄存器构成的。

算术逻辑部件ALU用来进行算术和逻辑运算。

控制逻辑负责对全机的控制工作,包括从存储器取指令,对指令进行译码分析,从存储器取得操作数,发出执行指令的所有命令,把结果存入存储器,以及对总线及I/O的传送控制等。

工作寄存器用来存放计算过程中所需要的或所得到的各种信息,包括操作数地址、操作数及运算的中间结果等。

20、请简述BIOS和DOS基本调用的大致步骤。

1、将调用参数装入指定的寄存器中;

2、BIOS或DOS功能号装入AH;

3、如需子功能号,把它装入AL;

4、按中断号调用DOS或BIOS中断(INT);

5、检查或取得返回参数。

21、指令要实现的功能是将变量VARY的段地址传送给DS寄存器

MOVDS,SEGVARY(×)立即数不能直接传送给段寄存器。

改为:

MOVAX,SEGVARY

MOVDS,AX

22、指令要实现的功能是将寄存器BX中的值传送到内存单元中

MOVVARY[SI],ES:

BX(×)寄存器寻址不能使用段跨越前缀。

改为:

MOVVARY[SI],BX

23、指令要实现的功能是将寄存器AL中得值传送到内存单元中

MOVBLOCK[DX+SI],AL(×)DX不能作为基址寄存器。

改为:

MOVBLOCK[BX+SI],AL

24、指令要实现的功能是将BLOCK中的一个字传送到VARY中

MOVVARY,WORDPTRBLOCK(×)两个操作数不能同时使用存储器寻址。

改为:

MOVAX,WORDPTRBLOCK

MOVVARY,AX

25、指令要实现的功能是将1000H与寄存器AX中的值求和

ADD1000H,AX(×)目的操作数不能使用立即寻址

改为:

ADDAX,1000H

26、指令要实现的功能是将偏移地址为100H的字节单元加1

INC[100H](×)操作数字长未定义。

改为:

INCBYTEPTR[100H]

27、指令要实现的功能是将变量BLOCK中的值和偏移地址为100H中的进行比较

CMPBLOCK,[100H](×)两个操作数不能同时使用存储器寻址。

改为:

MOVAL,BLOCK

CMPAL,[100H]

28、指令要实现的功能是实现两个八位二进制数的或运算

ORAX,BL(×)AX为16为二进制数,字长不一致。

改为:

ORAL,BL

29、指令要实现的功能是将2000H入栈

PUSH2000H(×)不能使用立即寻址

改为:

MOVAX,2000H

PUSHAX

30、指令要实现的功能是将(BX)指向的字节单元的值减2

SUB[BX],2(×)操作数字长未定义。

改为:

SUBBYTEPTR[BX],2

31、指令要实现的功能是将DS寄存器中的值传送到ES中

MOVES,DS(×)两个操作数不能同为段寄存器

改为:

MOVAX,DS

MOVES,AX

32、指令要实现的功能是将内存单元中的值加上10H

ADDWORDPTR[BX+BP],10H(×)不能同时使用两个基址寄存器

改为:

ADDWORDPTR[BX+SI],10H

33、指令要实现的功能是将偏移地址1000H传送给BX寄存器

LEABX,1000H(×)不能使用立即寻址

改为:

LEABX,[1000H]

34、指令要实现的功能是将AL寄存器中的值输出到02端口

OUTAL,02H(×)源操作数与目的操作数位置颠倒

改为:

OUT02H,AL

35、指令要实现的功能是实现段内间接转移

JMP[BX](×)没有明确是段内转移还是短间转移

改为:

JMPWORDPTR[BX]

36、指令要实现的功能是求BLOCK[SI]中的值与(BX)中的值之差。

SUBBLOCK[SI],BX(×)目的操作数与源操作数字长不一致。

改为:

SUBWORDPTRBLOCK[SI],BX

37、指令要实现的功能是完成两个字节数据的乘法

MULAL,BL(×)乘法指令是单操作数指令,不能有两个操作数

改为:

MULBL

38、指令要实现的功能是进行两字符串的比较,并找出它们不相匹配的位置

REPCMPSB(×)CMPS指令不能与REP联用

改为:

REPZCMPSB

39、指令要实现的功能是当ZF为0时程序执行发生转移

JNZFARPTR[BX](×)条件转移指令不能使用段间间接寻址方式,只能使用段内直接寻址方式

改为:

JNZ标号

1、在8086/8088汇编语言中,有五条串操作指令,其中搜索字符串指令的助记符是SCASB。

2、外部设备与主机的通信是通过外设接口进行的,接口寄存器根据用途可以分为数据寄存器,状态寄存器,命令寄存器。

3、执行查表指令XLAT时,要先将表地址存放在BX中,将位移量存放在AL。

4、常用的DOS功能调用中的1号功能调用完成键盘输入并回显操作,2号功能调用完成显示输出一字符操作,9号功能调用完成显示字符串操作,A号功能调用完成键盘输入到缓冲区。

5、某内存单元中存放的二进制代码为?

H,如果它是一个无符号数,则其对应的十进制数为?

,而如果是一个有符号数,则其对应的十进制数为?

,再如果是一个压缩的BCD码,则其对应的十进制数为?

6、假设某个字的值是XXXXH,其低位字节地址是YYYYYH,高位字节地址是ZZZZZH,那么该字的字地址是?

7、8086/8088CPU允许最大的存储空间为1MB,因此CPU的地址总线是20位。

8、8086/8088微处理器中,既存放数据也可存放偏移地址的寄存器有BX、SP、BP、SI和DI。

9、十六进制数?

?

?

?

H表示的十进制正数为?

?

,表示的十进制负数为?

?

10、当标志位CF=1时表示无符号数运算产生溢出,而当标志位OF=1是表示带符号数运算产生溢出。

11、在8086/8088系统中,存储器物理地址是分段组织的。

堆栈段的段地址存放在SS寄存器中,栈顶数据的偏移地址放在SP寄存器中。

代码段的段地址存放在CS寄存器中,偏移地址在IP寄存器中。

12、8位的有符号二进制数的表数范围是-128至127。

 

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

当前位置:首页 > 初中教育 > 科学

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

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