汇编问题3.1小甲鱼的机器测试截图 自己做找不到答案,求过程
(1)在Debug中,用“d 0000:0000 1f”查看内存,结果如下0000:0000 70 80 F0 30EF60 30E2-00 8080 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,写出每条汇编指令执行完后相关寄存器中的值。
mov ax, 1
mov ds, ax
mov ax, AX = 2662
mov bx, BX = E626
mov ax, bx AX = E626
mov bx, AX = 2662
mov bx, BX = D6E6
addax, bx AX = FD48
addax, AX = 2C14
mov ax, 0 AX = 0000
mov ax, AX = 00E6
mov bx, 0 BX = 0000
mov bl, BX = 0026
addal, bl AX = 000C
(2)内存中的情况如图3.6所示
各寄存器的初始值:CS = 2000H, IP = 0, DS = 1000H, AX = 0, BX = 0;
1 写出CPU执行的指令序列(用汇编指令写出)。
2 写出CPU 执行每条指令后,CS、IP和相关寄存器中的数值。
3 再次体会:数据和程序有区别吗?如何确定内存中的信息那些是数据,那些是程序?
mov ax, 6622H 把6622H付给ax寄存器
jmp 0ff0:0100 跳转到内存地址10000H 段地址是0ff0偏移地址0100
mov ax, 2000H 把2000H付给ax寄存器
mov ds, ax 把通用寄存器ax中的数据2000H付给ds寄存器
mov ax, 把数据段地址2000H内存单元地址0008中的数据C389付给ax每个ax接受一个字两个字节的数据如果指定的是89那调入到ax中就缺少一个字节所以自动加上下一个地址段中的字节C3。
mov ax, 把数据段地址2000H内存单元地址0002中的数据付给ax每个ax接受一个字两个字节的数据道理同上。
mov ax, 6622H AX:6622BX:0000 CS:2000 IP:0003DS:1000
jmp 0ff0:0100 AX:6622BX:0000 CS:0ff0IP:0100DS:1000
mov ax, 2000H AX:2000BX:0000 CS:0ff0IP:0103 DS:1000
mov ds, ax AX:2000 BX:0000 CS:0ff0IP:0105DS:2000
mov ax, AX:C389BX:0000 CS:0ff0IP:0108DS:2000
mov ax, AX:EA66BX:0000 CS:0ff0IP:010B DS:2000
这个是答案,问题是我自己做得不到这答案 本帖最后由 jackz007 于 2019-8-11 23:53 编辑
1、这道题的设定情景有非常大的问题,首先,0000:0010~0000:001F 这段内存属于操作系统区域,是用来存放 DOS 操作系统中断向量表的,这段内存每台机器既不一样也不能修改,根本无法重现题目中所描述的情景;
2、第 2 题要求分别从固定的内存地址 2000:0000 和 0FF0:0100 编写代码,并进行跟踪,除非这 2 段内存地址都是未使用的自由空间,否则,修改代码的操作会直接危害到操作系统安全,也可能会破坏 debug.exe 本身占用的内存空间,从而造成非常严重的问题,使 debug 无法运行,预期的任务就不能完成。
比如,在我这里,debug.exe 启动时的,CS:IP 是 13E5:0100,在我输入 0FF0:0100 处汇编代码的过程中,debug.exe 竟然意外退出,原因显然是我的行为严重破坏了 debug.exe 的运行环境,才会有这样的结果。
所以,这 2 道题的设置并不能确保每个人都能够 100% 完成。 主要我是一个小白,需要的是过程可以看看吗,感觉是自己过程哪里错了,可以截图吗 本帖最后由 jackz007 于 2019-8-12 12:28 编辑
第1题:
-d 0001:0000 l10
0001:00008B 01 70 00 B9 06 10 02-40 07 10 02 FF 03 10 02 ..p.....@.......
-a
13F0:0100 xor ax,ax
13F0:0102 xor bx,bx
13F0:0104 mov ax,1
13F0:0107 mov ds,ax
13F0:0109 mov ax,
13F0:010C mov bx,
13F0:0110 mov ax,bx
13F0:0112 mov bx,
13F0:0116 mov bx,
13F0:011A add ax,bx
13F0:011C add ax,
13F0:0120 mov ax,0
13F0:0123 mov ax,
13F0:0126 mov ax,0
13F0:0129 mov ax,
13F0:012C mov bx,0
13F0:012F mov bl,
13F0:0133 add al,bl
13F0:0135
-u 100 134
13F0:0100 31C0 XOR AX,AX ; AX = 0000
13F0:0102 31DB XOR BX,BX ; BX = 0000
13F0:0104 B80100 MOV AX,0001 ; AX = 0001
13F0:0107 8ED8 MOV DS,AX ; DS = 0001
13F0:0109 A10000 MOV AX, ; AX = 018B
13F0:010C 8B1E0100 MOV BX, ; BX = 7001
13F0:0110 89D8 MOV AX,BX ; AX = 7001
13F0:0112 8B1E0000 MOV BX, ; BX = 018B
13F0:0116 8B1E0200 MOV BX, ; BX = 0070
13F0:011A 01D8 ADD AX,BX ; AX = 7071
13F0:011C 03060400 ADD AX, ; AX = 772A
13F0:0120 B80000 MOV AX,0000 ; AX = 0000
13F0:0123 A10200 MOV AX, ; AX = 0070
13F0:0126 B80000 MOV AX,0000 ; AX = 0000
13F0:0129 A10200 MOV AX, ; AX = 0070
13F0:012C BB0000 MOV BX,0000 ; BX = 0000
13F0:012F 8A1E0C00 MOV BL, ; BL = FF
13F0:0133 00D8 ADD AL,BL ; AL = 6F
-q
本帖最后由 jackz007 于 2019-8-12 12:25 编辑
第 2 题,debug 入口是 13F0:0100,首先在程序入口,构筑程序起始条件:DS = 1000,AX = 0,BX = 0
-a
13F0:0100 mov ax,1000
13F0:0103 mov ds,ax
13F0:0105 xor ax,ax
13F0:0107 xor bx,bx
13F0:0109 jmp 2000:0
13F0:010E
然后,编写题目要求的目标代码
-a 2000:0
2000:0000 mov ax,6622
2000:0003 jmp 2ff0:0100
2000:0008
-a 2ff0:0100
2FF0:0100 mov ax,2000
2FF0:0103 mov ds,ax
2FF0:0105 mov ax,
2FF0:0108 mov ax,
由于段地址 0FF0 目前属于已占用内存,为了安全起见,把原来预设的下一个代码段地址 0FF0 更改为 2FF0
下面是目标数据 2000:0000 ~ 2000:0010 的实际内存数据
2000:0000B8 22 66 EA 00 01 F0 2F-00 00 00 00 00 00 00 00 ."f..../........
最后得到:
-d 2000:0 l10
2000:0000B8 22 66 EA 00 01 F0 2F-00 00 00 00 00 00 00 00 ."f..../........
-u 100 10d
13F0:0100 B80010 MOV AX,1000 ; AX = 1000
13F0:0103 8ED8 MOV DS,AX ; DS = 1000
13F0:0105 31C0 XOR AX,AX ; AX = 0000
13F0:0107 31DB XOR BX,BX ; BX = 0000
13F0:0109 EA00000020 JMP 2000:0000 ;CS = 2000,IP = 0000
-u 2000:0 l7
2000:0000 B82266 MOV AX,6622 ; AX = 6622
2000:0003 EA0001F02F JMP 2FF0:0100 ; CS = 2FF0,IP = 0100
-u 2ff0:100 la
2FF0:0100 B80020 MOV AX,2000 ; AX = 2000
2FF0:0103 8ED8 MOV DS,AX ; DS = 2000
2FF0:0105 A10800 MOV AX, ; AX = 0000
2FF0:0108 A10200 MOV AX, ;AX = EA66
可以发一个图片吗,我主要不确定过程 问题
1、XOR是什么命令
2、题目d查看的是d 0000:0000 1f你写的是d0001:0000 110
页:
[1]