您的位置:首页 > 其它

王爽 汇编语言 检测点 3.1

2014-01-01 23:46 363 查看

检测点 3.1:

 

1)在 Debug中用 “d 0:0 1f” 查看内存,结果如下:



下面的程序执行前,AX = 0, BX = 0,写出每条汇编指令执行完后相关寄存器中的值。

Mov ax,1

Mov ds,ax

Mov ax,[0000]; AX=2662

Mov bx,[0001]; BX=E626

Mov ax,bx   ; AX=E626

Mov ax,[0000]; AX=2662

Mov bx,[0002];BX=D6E6

Add ax,bx   ;AX=FD48

Add ax,[0004]; AX=FD48+2ECC=2C14

Mov ax,0    ; AX=0

Mov al,[0002]; AX=00E6

Mov bx,0    ; BX=0

Mov bl,[000C]; BX=0026

Add al,bl   ; AX=000C

 

2)   



执行过程:

第一步:CS=2000H,IP=0H 地址:20000H

        读取第一条指令 mov ax,6622H

        CS=2000H, IP=03H

        执行指令 mov ax,6622H

        执行结果:AX=6622H

第二步:地址:20003H

        读取第二条指令 jmp 0ff0:0100

        CS=2000H,IP=03H

        执行指令:jmp 0ff0:0100

        执行结果:CS=0ff0H, IP=0100H

第三步:地址:CSx16+IP = 10000H

        读取指令:mov ax,2000H

        CS=0ff0H, IP=0103H

        执行指令:mov ax,2000H

        执行结果:AX=2000H

第四步:地址:10003H

        读取指令:mov ds,ax

        CS=0ff0H, IP=0105H

        执行指令:mov ds,ax

          执行结果:ds=2000H

第五步:地址:10005H

        读取指令:mov ax,[0008]

CS=0ff0H,IP=10008H,DS=2000H

        执行指令:mov ax,[0008] ;

也就是将地址【DS:IP】为 2000H:0008H的值移动到AX

        执行结果:AX=C189H

第六步:读取指令:mov ax,[0002]

        CS=0ff0H ,IP=1000BH,DS=2000H

        执行指令:mov ax,[0002]

        执行结果:AX=EA66

 

知识点

任意时刻SS:SP 指向栈顶元素。

push指令和pop指令执行时,CPU从 SS和SP中得到栈顶的地址。

注:SS(Stack Segmet)堆栈段寄存器,指向当前的堆栈段。

SP(Stack Pointer)堆栈指针寄存器,主要用于堆栈操作,存放堆栈段首地

址到栈顶单元的偏移量。

入栈时:886CPU栈顶从高地址向低地址方向增长。

还没有看完以后有机会再添加吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: