汇编语言(王爽第三版)检测点 2

检测点 2.1

(1) 写出每条汇编指令执行后相关寄存器中的值。

mov ax,62627   AX=F4A3H              

讲解:62627转换成十六进制:F4A3H

mov ah,31H     AX=31A3H               

讲解:(ah)=31H,(al)=A3H,组合后(ax)=31A3H

mov al,23H     AX=3123H 

讲解:(al)=23H,(ah)=31H,组合后(ax)=3123H 

add ax,ax      AX=6246H 

mov bx,826CH   BX=826CH 

mov cx,ax      CX=6246H 

mov ax,bx      AX=826CH 

add ax,bx      AX=04D8H 

mov al,bh      AX=0482H 

mov ah,bl      AX=6C82H 

add ah,ah      AX=D882H 

add al,6       AX=D888H 

add al,al      AX=D810H 

mov ax,cx      AX=6246H

讲解:你可以将相关的寄存器的状态写在纸上,一步一步的执行,把你想象成CPU。

 (2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 

mov  ax,2         AX=2 

add  ax,ax        AX=4 

add  ax,ax        AX=8 

add  ax,ax        AX=16 

 检测点2.2

 (1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 1000FH

 解题分析:

物理地址=SA*16+EA   

EA的变化范围为0h~ffffh   

物理地址范围为(SA*16+0h)~(SA*16+ffffh)   

现在SA=0001h,那么寻址范围为   

(0001h*16+0h)~(0001h*16+ffffh)   =0010h~1000fh 

(2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H

当段地址给定为 1001H 以下和 2000H 以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。

 解题分析:

物理地址=SA*16+EA   

20000h=SA*16+EA   

SA=(20000h-EA)/16=2000h-EA/16   

EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值   

EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值 

检测点2.3

下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少? 

mov ax,bx 

sub ax,ax 

jmp ax 

 答案:一共修改四次

第一次:读取mov ax,bx之后 

第二次:读取sub ax,ax之后 

第三次:读取jmp ax之后 

第四次:执行jmp ax修改IP 

最后IP的值为0000H(因为最后ax中的值为0000H,所以IP中的值也为0000H  )

posted @ 2017-05-20 16:33  筑基2017  阅读(900)  评论(0编辑  收藏  举报