第四章离散数学.docx

上传人:b****4 文档编号:5497074 上传时间:2023-05-08 格式:DOCX 页数:8 大小:17.95KB
下载 相关 举报
第四章离散数学.docx_第1页
第1页 / 共8页
第四章离散数学.docx_第2页
第2页 / 共8页
第四章离散数学.docx_第3页
第3页 / 共8页
第四章离散数学.docx_第4页
第4页 / 共8页
第四章离散数学.docx_第5页
第5页 / 共8页
第四章离散数学.docx_第6页
第6页 / 共8页
第四章离散数学.docx_第7页
第7页 / 共8页
第四章离散数学.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第四章离散数学.docx

《第四章离散数学.docx》由会员分享,可在线阅读,更多相关《第四章离散数学.docx(8页珍藏版)》请在冰点文库上搜索。

第四章离散数学.docx

第四章离散数学

1.指令下列指令的错误

(1)MOVAH,BX    源操作数与目的操作数长度不相同

(2)MOV[BX],[SI]两个内存单元传递数据在汇编语言中是不允许的

(3)MOVAX,[SI][DI]   不能用两个变址连用,其中一个应为基址

(4)MOVMYDAT[BX][SI],ES:

AX   两个内存单元传递数据在汇编语言中是不允许的

(5)MOVBYTEPTR[BX],1000必须有一个为寄存器

(6)MOVBX,OFFSETMYDAT[SI]    OFFSET不能与复杂操作数相连

(7)MOVCS,AX   CS作为目的操作数使用

(8)MOVECX,AX    操作数类型不同

2.下面哪些指令是非法的.(假设OP1,OP2是已经用DB定义的变量)

(1)CMP15,BX  ;立即数作为目的操作数,非法  

(2)CMPOP1,25;合法   

(3)CMPOP1,OP2;OP1和OP2都存放在存储器单元中,非法  

(4)CMPAX,OP1;AX和OP1的类型不匹配,非法

3.假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?

它们的错误是什么?

(1)MOVBP,AL  ;非法,操作数类型不同

(2)MOVWORD_OP[BX+4*3][DI],SP    ;合法

(3)MOVWORD_OP1,WORD_OP2    ;非法,不允许两个内存单元直接传递数据

(4)MOVAX,WORD_OP1[DX]   ;合法

(5)MOVSAVE_WORD,DS      ;合法

(6)MOVSP,SS:

DATA_WORD[BX][SI];合法

(7)MOV[BX][SI],2   ;非法,必须有一个寄存器

(8)MOVAX,WORD_OP1+WORD_OP2  ;非法,两个内存单元地址相加没有意义

(9)MOVAX,WORD_OP1-WORD_OP2+100;合法

(10)MOVWORD_OP1,WORD_OP1-WORD_OP2  ;非法,不允许两个内存单元直接传递数据

4.假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处.

(1)ADDVAR1,VAR2;两内存单元传递数据

(2)SUBAL,VAR1   ;操作数类型不同,AL为字节类型,VAR1为字类型

(3)JMPLAB[SI]   ;跳转指令只能跳转到符号地址

(4)JNZVAR1      ;转移指令后不能为变量,只能为标号

(5)JMPNEARLAB  ;格式不对,应为JMPNEARPTRLAB

5.画图说明下列语句所分配的存储空间及初始化的数据值.

(1)BYTE_VARDB'BYTE',12,-12H,3DUP(0,?

DUP(1,2),?

(2)WORD_VARDW5DUP(0,1,2),?

-5,'BY','TE',256H

 

 

6.试列出各种方法,使汇编程序把5150H存入一个存储器字中(例如:

DW5150H).

(1)DW5150H

(2)MOVAX,5150H

  MOVADDRESS,AX

等,写出几个就可以

7.请设置一个数据段DATASEG,其中字义如下字符变量或数据变量.

(1)FLD1B为字符串变量:

'personalcomputer';

(2)FLD2B为十进制数字节变量:

32;

(3)FLD3B为十六进制数字节变量:

20;

(4)FLD4B为二进制数字节变量:

01011001;

(5)FLD5B为数字的ASCII字符字节变量:

32654;

(6)FLD6B为10个零的字节变量;

(7)FLD7B为零件名(ASCII码)及其数量(十进制数)的表格;

PART120

PART250

PART314

(8)FLD1W为十六进制数字变量:

FFF0;

(9)FLD2W为二进制数字变量:

01011001;

(10)FLD3W为(7)中零件表的地址变量;

(11)FLD4W为包括5个十进制数的字变量:

5,6,7,8,9;

(12)FLD5W为5个零的字变量;

(13)FLD6W为本段中字数据变量和字节数据变量之间的地址差;

[解]:

DATASGSEGMENT

FLD1BDB  'personalcomputer'

FLD2B  DB10DUP(32)

FLD3B   DB20H

FLD4B   DB01011001B

FLD5BDB'32654'

FLD6BDB10DUP(0)

FLD7B  DB'PART1',DUP20(?

),'PART2',DUP50(?

),'PART3',DUP14(?

FLD1W  DW0FFF0H

FLD2W  DW01011001B

FLD3WDW  FLD7B

FLD4W  DW5,6,7,8,9

FLD5W  DW5DUP(0)

FLD6WDW(FLD6W-FLD1W)-(FLD7B-FLD1B)

8.假设程序中的数据定义如下:

PARTNODW?

PNAMEDB16DUP(?

COUNTDD?

PLENTHEQU$-PARTNO

问PLENTH的值为多少?

它表示什么意义?

[解]:

PLENTH的值为22,GE表示该数据段的长度

9.有符号定义语句如下:

BUFFDB1,2,3,'123'

EBUFFDB0

LEQUEBUFF-BUFF

问L的值为多少?

[解]:

L的值为7.

10.假设程序中的数据定义如下:

LNAMEDB30DUP(?

ADDRESSDB30DUP(?

CITYDB15DUP(?

CODE_LISTDB1,7,8,3,2

(1)用一条MOV指令如LNAME的偏移地址放入AX.

MOVAX,OFFSETLNAME

(2)用一条指令将CODE_LIST的头两个字节的内容放入SI.

MOVSI,WORDPTRCODE_LIST

(3)写一条伪指令使CODE_LENGTH的值等于CODE_LIST域的实际长度.

CODE_LENGHT  EQU  $-CODE_LIST

11.试写出一个完整的数据段DATA_SEG,它把整数5赋予一个字节,并把整数-1,0,2,5和4放在10字数组DATA_LIST的

头5个单元中.然后,写出完整的代码段,其功能为:

把DATA_LIST中头5个数中的最大值和最小值分别存入MAX和MIN单

元中.

[解]:

源程序如下.

DATA_SEGSEGMENT

DB5

DATA_LISTDW0FFFFH,0,2,5,4,5DUP(?

MAXDW?

MINDW?

DATA_SEGENDS

CODE_SEGSEGMENT

ASSUMECS:

CODE_SEG,DS:

DATA_SEG

START:

MOVAX,DATA_SEG

MOVDS,AX

MOVAX,5

MOVMAX,AX

MOVAX,0FFFFH

MOVMIN,AX

CODE_SEGENDS

ENDSTART

12.给出等值语句如下:

ALPHAEQU100

BETAEQU25

GAMMAEQU2

下列表达式的值是多少?

(1)ALPHA*100+BETA   ;10025

(2)ALPHAMODGAMMA+BETA;25

(3)(ALPHA+2)*BETA-2  ;2548

(4)(BETA/3)MOD5;3

(5)(ALPHA+3)*(BETAMODGAMMA);103

(6)ALPHAGEGAMMA;0FFFFH

(7)BETAAND7  ;1

(8)GAMMAOR3  ;3

13.对于下面的数据定义,三条MOV指令分别汇编成什么?

(可用立即数方式表示)

TABLEADW10DUP(?

TABLEBDB10DUP(?

TABLECDB'1234'

......

MOVAX,LENGTHTABLEA

MOVBL,LENGTHTABLEB

MOVCL,LENGTHTABLEC

[解]:

分别汇编成为:

MOVAX,0AH

MOVBL,0AH

MOVCL,1

14.对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?

FLDBDB?

TABLEADW20DUP(?

TABLEBDB'ABCD'

(1)MOVAX,TYPEFLDB  ;(AX)=1    

(2)MOVAX,TYPETABLEA;(AX)=2   

(3)MOVCX,LENGTHTABLEA   ;(CX)=14H

(4)MOVDX,SIZETABLEA     ;(DX)=32H  

(5)MOVCX,LENGTHTABLEB   ;(CX)=1]

15.指出下列伪操作表达方式的错误,并改正之.

(1)DATA_SEGSEG

操作符错误,应改正为:

DATA_SEG  SEGMENT

(2)SEGMENT'CODE'

缺少段名,在前面加个段名,如:

CODESEGMENT'CODE'

(3)MYDATASEGMENT/DATA

  ......

ENDS

注释应该以";"开始应该把那个"/"改成";"

(4)MAIN_PROCPROCFAR

  ......

ENDMAIN_PROC

MAIN_PROCENDP

结构混乱,改为:

MAIN_PROCPROCFAR

.......

MAIN_PROC   ENDP

END  

16.按下面的要求写出程序的框架.

(1)数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;

(2)堆栈段从小段开始,段组名为STACK;

(3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;

(4)程序结束.

[解]:

程序框架如下.

DATA_SEG  SEGMENT

ORG0E000H

FIRST_TYPEEQUTHISWORD

DATA_GROUPDB100DUP(?

DATA_SEGENDS

STACK_SEGSEGMENT

ALIGN16

STACKDB100DUP(?

STACK_SEG  ENDS                                     ;

CODE_SEGSEGMENT

ASSUMECS:

CODE_SEG,DS:

DATA_SEG,SS:

STACK_SEG

ORG1000H

START:

MOVAX,DATA_SEG

MOVDS,AX

MOVAX,STACK_SEG

MOVSS,AX

.......

CODE_SEGENDS

ENDSTART     

17.写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结

果存放在D_SEG中的SUM中.其中AUGEND,ADDEND和SUM均为双精度数,AUGEND赋值为99251,APPEND赋值为-15962.

D_SEG   SEGMENT

AUGEND  DD99251

D_SEGENDS

E_SEGSEGMENT

ADDENDDD-15926

E_SEG  ENDS

C_SEG   SEGMENT

ASSUME  CS:

C_SEG,DS:

D_SEG,ES:

E_SEG

START:

MOVAX,D_SEG

MOVDS,AX

MOVAX,E_SEG

MOVES,AX

MOVEAX,DS:

AUGEND

ADDEAX,ES:

ADDEND

MOVDS:

SUM,EAX

C_SEGENDS

ENDSTART                       

18.请说明表示程序结束的伪操作和结束程序执行的语句之间的差别.它们在源程序中应如何表示?

[解]:

表示程序结束的伪操作是由系统所执行,并且在操作系统的控制下自动完成,如:

MOVAX,4C00HINT21H等;而

结束程序执行的语句除了以上这些以外,还可以是其它非正常终止的指令,如HALT,EXIT等.

19.试说明下述指令中哪些需要加上PTR伪操作.

BVALDB10H,20H

WVALDW1000H

(1)MOVAL,BVAL

(2)MOVDL,[BX]

(3)SUB[BX],2

(4)MOVCL,WVAL

(5)ADDAL,BVAL+1

需要加上PTR伪操作的有:

(2)(3)(4)

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2