永发信息网

汇编高手 解释一下这个程序世界编程大赛一等奖作品

答案:5  悬赏:40  手机版
解决时间 2021-02-24 13:30
  • 提问者网友:杀手的诗
  • 2021-02-23 17:00
e100 33 f6 bf 0 20 b5 10 f3 a5 8c c8 5 0 2 50 68 13 1 cb e 1f be a1 1 bf 0 1
e11b 6 57 b8 11 1 bb 21 13 89 7 4b 4b 48 79 f9 ad 86 e0 8b c8 bd ff ff e8 20
e134 0 3d 0 1 74 1a 7f 3 aa eb f3 2d ff 0 50 e8 f 0 5a f7 d8 8b d8 26 8a 1 aa
e14f 4a 75 f9 eb de cb 57 bb 21 13 8b c1 40 f7 27 f7 f5 8b fb ba 11 1 4f 4f 4a
....................................................................
e10b8 99 2f ac 33 4d fa 58 3a 5a a a4 1a 74 62 c8 4f 3b 78 9 d7 ee 7e ee 2d 69
e10d1 30 40 ea 47 82 3b 85 8e 3 23 8f 74 4e 8 35 ab 74 4 1 57 d5 85 b1 6b 1e
e10ea f4 7d 1e d2 1e b3 fe f3 12 10 32 39 51 48 2d 6f e5 d3 a3 8c 8 8

g
rcx
fff
n1.com
w
q

把着段代码复制下来存为文本文档,命名为asm

在DOS下用debug
生成一个可执行程序。

进去是一个3D游戏的旋转界面,还有一段美妙的音乐,真是牛!!!
快去看看吧。

请详细解释一下 ,就好 选一个句子解释 多谢
最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-02-23 17:35
前几段是三次变码,然后对图块进行浮点计算,在320*200的13H图形模式下,
顺序显示。解压出来的COM文件约5K,结尾处为:MNISCENT(C) 1997 SANCTION。
上面的的部分代码反编译为:
.386
.model tiny
code segment byte public 'CODE' use16

org 100h
assume cs:code,ds:code
public start
start proc far
xor si, si
mov di, 2000h
mov ch, 10h
rep movsw ;这几句将自身(含PSP)2000字节搬到CS:2000H处
mov ax, cs
add ax, 200h
push ax
push 113h
retf;修改CS:IP为(CS+200H):0113H
push cs
pop ds
mov si, 1A1h
mov di, 100h
push es
push di
mov ax, 111h
mov bx, 1321h

loc_123:
mov [bx], ax
dec bx
dec bx
dec ax
jns short loc_123
lodsw
xchg ah, al
mov cx, ax
mov bp, 0FFFFh

loc_132:
call sub_155
cmp ax, 100h
jz short locret_154
jg short loc_13F
stosb
jmp short loc_132

loc_13F:
sub ax, 0FFh
push ax
call sub_155
pop dx
neg ax
mov bx, ax

loc_14B:
mov al, es:[bx+di]
stosb
dec dx
jnz short loc_14B
jmp short loc_132

locret_154:
retf
start endp

sub_155 proc near
push di
mov bx, 1321h
mov ax, cx
inc ax
mul word ptr [bx]
div bp
mov di, bx
mov dx, 111h

loc_165:
dec di
dec di
dec dx
cmp [di], ax
jg short loc_165
push dx
mov ax, bp
mul word ptr [di]
div word ptr [bx]
sub cx, ax
xchg ax, bp
mul word ptr [di+2]
div word ptr [bx]
xchg ax, bp
sub bp, ax

loc_17E:
dec byte_10FE
jns short loc_18A
mov byte_10FE, 7
inc si

loc_18A:
rcl byte ptr [si], 1
rcl cx, 1
shl bp, 1
jns short loc_17E
pop dx
mov ax, 111h

loc_196:
inc word ptr [bx]
dec bx
dec bx
dec ax
cmp dx, ax
jnz short loc_196
pop di
retn
sub_155 endp
;以下部分为加密代码,反编译无意义。
db 83h, 0F7h, 83h, 0A6h, 5Dh, 59h, 82h, 0CDh
... ...
code ends
end start
全部回答
  • 1楼网友:封刀令
  • 2021-02-23 20:02
以上代码只不过是对一段动画反汇编的结果,编程并不真正是这样的。如果对别的动画反汇编,也会出现类似的代码。 没有人能直接徒手写出机器码来的.
  • 2楼网友:从此江山别
  • 2021-02-23 19:17
他说的很对,上述是16进制码,是反汇编的结果,真正的汇编格式如下 org 0000h mov A add A 等等。。。。 应该说狠狠少人能直接徒手写出机器码来的。一切皆有可能。
  • 3楼网友:怀裏藏嬌
  • 2021-02-23 19:02
还是可以弄的吧,比如你用16进制编辑工具ultraedit打开一个程序,看到就是16进制的形式,第一个想到这么做,并且把他做出来的肯定是比较牛的。我对DEBUG这个程序不了解。
  • 4楼网友:深街酒徒
  • 2021-02-23 18:20
在g前加上 u 100 lfff 执行debugprog.txt 执行后 prog.txt 里会记下反汇编的代码
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯