王爽 汇编语言 检测点 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栈顶从高地址向低地址方向增长。
还没有看完以后有机会再添加吧。
相关文章推荐
- 【汇编语言】王爽第三版----------------检测点3.1
- 【王爽-汇编语言】第八章检测题分析
- 【王爽-汇编语言】第六章检测题分析
- 王爽汇编语言 检测 1.1
- 汇编语言 第三版 王爽 检测点2.3
- 王爽汇编语言 检测点11.4
- 【王爽-汇编语言】第三章检测题分析
- 【王爽-汇编语言】第七章检测题分析
- 汇编语言(王爽)第六章检测点与实验5
- 王爽汇编语言第二版学习笔记之检测点13.1
- 【王爽-汇编语言】第十章检测题分析
- 【王爽-汇编语言】第11章检测题分析
- 王爽《汇编语言(第三版)》检测点11.1
- 【汇编语言】王爽第三版----------------检测点3.2
- 王爽汇编语言笔记——第十章检测点10.5(2)
- 【汇编语言】王爽第三版----------------检测点2.1
- 【汇编语言】王爽第三版----------------检测点2.2
- 【王爽-汇编语言】第九章检测题分析
- 【王爽-汇编语言】第四章检测题分析
- 【王爽-汇编语言】第五章检测题分析