您好,欢迎访问三七文档
3月19/21日作业4.1指出下列指令的错误错误原因(1).MOVAH,BX源操作数与目的操作数长度不相同(2).MOV[BX],[SI]这是两个内存单元在传递数据,是不允许的(3).MOVAX,[SI][DI]不能用两个变址连用,其中一个应为基址(4).MOVMYDAT[BX][SI],ES:AX同(2)(5).MOVBYTEPTR[BX],1000操作数类型不同(6).MOVBX,OFFSETMYDAT[SI]OFFSET不能与复杂操作数相连(7).MOVCS,AX不能对CS赋值(8).MOVECX,AX操作数类型不同14.2下面哪些指令是非法的?(假设OP1,OP2是已经用DB定义的变量)指令指令的合法性(1).CMP15,BXDST不允许是立即数,非法.(2).CMPOP1,25合法。(3).CMPOP1,OP2不允许DST和SRC同时为Mem操作数,非法。(4).CMPAX,OP2数据类型匹配,非法。24.3假设下列指令中所有标识符均为类型属性为字的变量。请指出指令中哪些是非法的?它们的错误是什么?(1).MOVBP,AL非法:操作数类型不匹配。(2).MOVWORD_OP[BX+4*3][DI],SP合法(3).MOVWORD_OP1,WORD_OP2非法:不允许两个内存单元直接传递数据(4).MOVAX,WORD_OP1[DX]非法:[DX]错3(5).MOVSAVE_WORD,DS合法(6).MOVSP,DATA_WORD[BX][SI]合法(7).MOV[BX][SI],2非法:操作数类型不明确(8).MOVAX,RORD_OP1+WORD_OP2非法:两个内存单元地址相加没有意义(9).MOVAX,WORD_OP1-OP2+100非法:两个内存单元地址相加没有意义(10).MOVWORD_OP1,WORD_OP2非法:不允许两个内存单元直接传递数据44.4假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处。指令错误之处(1).ADDVAR1,VAR2两内存单元传递数据(2).SUBAL,VAR1操作数类型不一致(3).JMPLAB[SI]跳转指令只能跳转到符号地址(4).JNZVAR1转移指令后不能为变量,只能为标号(5).JMPNEARLAB格式不对,应改为JMPNEARPTRLAB53月24/25日作业4.11编写1个完整的数据段DATA_SEG,它把整数5赋于1个字节,并把整数-1,0,2,5和4放在10字数组DATA_LIST的头5个单元中。然后,写出完整的代码段,把DATA_LIST中头5个数中的最大值和最小值分别存入MAX和MIN单元中。6解11.代码如下:DATA_SEGSEGMENTDB5DATA_LISTDW0FFFFH,0,2,5,4,5DUP(?)MAXDW?MINDW?DATA_SEGENDSCODE_SEGSEGMENTASSUMECS:CODE_SEG,DS:DATA_SEG7START:MOVAX,DATA_SEGMOVDS,AXMOVAX,DATA_LIST+6;最大数赋给AXMOVMAX,AX;最大数写入MAX单元MOVAX,DATA_LIST;最小数赋给AXMOVMIN,AX;最小数写入MIN单元CODE_SEGENDS
本文标题:汇编作业第4章
链接地址:https://www.777doc.com/doc-4599517 .html