第四章离散数学.docx
- 文档编号:11074374
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:8
- 大小:17.95KB
第四章离散数学.docx
《第四章离散数学.docx》由会员分享,可在线阅读,更多相关《第四章离散数学.docx(8页珍藏版)》请在冰豆网上搜索。
第四章离散数学
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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 离散数学