汇编语言期末复习总结(完整版).doc
文本预览下载声明
〔习题1.24〕说明下列指令中源操作数的寻址方式?如果BX=2000H,DI=40H,给出DX的值或有效地址EA的值。 (1) mov dx,[1234h]直接寻址,EA=1234H
(3) mov dx,bx寄存器寻址,DX=2000H
(6) mov dx,[bx+di]基址变址寻址,EA=2040H
第2章 8086的指令系统
〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1) mov ax,1200hAX=1200H
(2) mov ax,bxAX=0100H
(3) mov ax,[1200h]AX=4C2AH?? ;偏移地址=1200h
(4) mov ax,[bx]AX=3412H??? ;偏移地址=bx=0100h
(5) mov ax,[bx+1100h]AX=4C2AH?? ;偏移地址=bx+1100h=1200h
(6) mov ax,[bx+si]AX=7856H??? ;偏移地址=bx+si=0100h+0002h=0102h
(7) mov ax,[bx][si+1100h]AX=65B7H??? ;偏移地址bx+si+1100h=0100h+0002h+1100h=1202h
?〔习题2.2〕指出下列指令的错误
(1) mov cx,dl两操作数类型不匹配
(2) mov ip,axIP指令指针禁止用户访问
(3) mov es,1234h立即数不允许传给段寄存器
(4) mov es,ds段寄存器之间不允许传送
(5) mov al,300两操作数类型不匹配
(6) mov [sp],ax目的操作数应为[ SI ]
(7) mov ax,bx+di源操作数应为 [BX+DI]?
(8) mov 20h,ah立即数不能作目的操作数
?〔习题2.8〕请分别用一条汇编语言指令完成如下功能: (1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。
(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
(3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。
(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。
(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。
(1)ADD DX,BX
(2)ADD AL,[BX+SI]
(3)ADD [BX+0B2H],CX
(4)ADD WORD PTR [0520H],3412H
(5)ADD AL,0A0H
〔习题2.10〕指出下列指令的错误: (1) xchg [si],30hxchg的操作数不能是立即数
(2) pop cs不应对CS直接赋值
(3) sub [si],[di]两个操作数不能都是存储单元
(4) push ah堆栈的操作数不能是字量
(5) adc ax,dsadc的操作数不能是段寄存器
(6) add [si],80h没有确定是字节还是字操作
(7)
(8) 〔习题2.〕假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转移指令实现以下判断: (1)若DX DI,转到above执行
?????????? cmp dx,di
?????????? ja above????????????? ;=jnbe above
(2)若AX SI,转到greater执行
?????????? cmp ax,si
?????????? jg greater??????????? ;=jnle greater
(3)若CX = 0,转到zero执行
?????????? cmp cx,0
?????????? jz zero?????????????? ;= jcxz zero??
〔习题2.〕对下面要求,分别给出3种方法,每种方法只用一条指令。 (1)使CF=0??? (2)使AX=0???
(1)解答:
???????? lc(清零)
???????? and ax,ax(逻辑操作不会进位)
???????? or ax,ax
(2)解答:
???????? xor ax,ax
???????? and ax,0
???????? mov ax,0
〔习题3.〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。 (1) mov byte ptr [bx],
显示全部