|  | 
 
| xy_god 中级用户
 
    疯狂的流浪者
 
 
 积分 276
 发帖 56
 注册 2003-9-25
 状态 离线
 | 
| 『楼 主』:
 让你看看纯机器指令是怎么运行的,嘿嘿!
 
使用 LLM 解释/回答一下 
 
 
;***************************************************;初学者进阶必读之汇编程序
 ;作者:xy_god
 ;*********************堆栈段************************
 STACK_SEG     SEGMENT   STACK
 
 STACK_SEG     ENDS
 ;**********************数据段***********************
 DATA_SEG      SEGMENT   PARA
 ABSCODE   DB 00h,0Dh,0B4h,09h,00h,0Fh;机器指令代码
 DB 0B0h,2Ah,00h,11h,0B7h,00h
 DB 00h,13h,0B3h,0DAh,00h,15h
 DB 0B9h,05h,00h,00h,18h,0CDh,10h
 DATA_SEG      ENDS
 ;******************代码段***************************
 CODE_SEG      SEGMENT   PARA
 MAIN          PROC      FAR
 ASSUME    CS:CODE_SEG,DS<img src="images/smilies/face-smile-big.png" align="absmiddle" border="0">ATA_SEG
 ASSUME    SS:STACK_SEG
 START:
 MOV       AX,STACK_SEG
 MOV       SS,AX
 MOV       SP,0000h
 MOV       AX,DATA_SEG
 MOV       DS,AX
 ;---------------非常规代码------------------
 MOV       AX,SEG ABSCODE
 PUSH      AX
 MOV       AX,OFFSET ABSCODE
 PUSH      AX
 RET
 ;-----------------------------------------
 MOV       AX,4C00H
 INT       21H
 MAIN          ENDP
 CODE_SEG      ENDS
 ;******************程序结束************************
 END       START
 
 
 
 
 
 
 
 |  
                  |  临河居士
 http://www.xygod.pc5.org
 |  | 
|  2003-10-30 00:00 |  | 
|  | 
 
| xy_god 中级用户
 
    疯狂的流浪者
 
 
 积分 276
 发帖 56
 注册 2003-9-25
 状态 离线
 | 
| 『第 2 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
说明一下,这个程序是我专门写给那些不知道机器代码是什么的人的!这个程序很简单,就是在数据段中写入相应的机器指令,然后在程序运行的时候跳入到这些机器指令当中去! 
 
 
 
 
 |  
                  |  临河居士
 http://www.xygod.pc5.org
 |  | 
|  2003-10-30 00:00 |  | 
|  | 
 
| xy_god 中级用户
 
    疯狂的流浪者
 
 
 积分 276
 发帖 56
 注册 2003-9-25
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
对了,大家觉得我的程序的可读性怎么样啊?呵呵!多提宝贵意见啦! 
 
 
 
 
 |  
                  |  临河居士
 http://www.xygod.pc5.org
 |  | 
|  2003-10-30 00:00 |  | 
|  | 
 
| joeguan2 初级用户
 
   
 
 
 积分 146
 发帖 11
 注册 2003-7-29
 状态 离线
 |  | 
|  2004-5-15 00:00 |  | 
|  | 
 
| crshen 中级用户
 
    
 
 
 积分 447
 发帖 126
 注册 2004-2-10
 状态 离线
 | 
| 『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Call的寻址方式与jmp基本相同,但为了从子程序返回,该指令在跳转以前会把紧接着它的下一条指令的地址压进堆栈。如果是段内调用(目标地址是32位偏移量),则压入的也只是一个偏移量。如果是段间调用(目标地址是48位全地址),则也压入下一条指令的完全地址。同样,如果段间转移涉及优先级的变化,则有一系列复杂的保护检查。
 与之对应retn/retf指令则从子程序返回。它从堆栈上取得返回地址(是call指令压进去的)并跳到该地址执行。retn取32位偏移量作段内返回,retf取48位全地址作段间返回。retn/f 还可以跟一个立即数作为操作数,该数实际上是从堆栈上传给子程序的参数的个数(以字计)返回后自动把堆栈指针esp加上指定的数*2,从而丢弃堆栈中的参数。这里具体的细节留待下一篇讲述。
 
 虽然call和ret设计为一起工作,但它们之间没有必然的联系。就是说,如果你直接用push指令向堆栈中压入一个数,然后执行ret,他同样会把你压入的数作为返回地址,而跳到那里去执行。这种非正常的流程转移可以被用作反跟踪手段
 
 
 
 
 
 |  
                  |  从来不用别人的东西,要用,也先改成自己的再说!
 |  | 
|  2004-5-16 00:00 |  | 
|  | 
 
| Michael 钻石会员
 
         
 
 
 
 积分 10046
 发帖 3039
 注册 2002-11-11
 状态 离线
 | 
| 『第 6 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
1010101011101010101010010101010111010101010110100101010101010101011110100101010101010101010101010101010101010101010101010101010000101010这才叫机器指令,BD.
 
 
 
 
 
 |  
                  |  简单就是美
 |  | 
|  2004-5-17 00:00 |  | 
|  | 
 
| Backer 初级用户
 
   
 
 
 积分 112
 发帖 3
 注册 2004-5-18
 状态 离线
 | 
| 『第 7 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
楼主啊,这明明是汇编嘛,离机器指令还差两级跳咧。 
不过在里面的数据段中还包含有机器指令,还算是符合帖意啦^_^
 
ret用的很巧妙
 
 
 
 
 |  | 
|  2004-5-18 00:00 |  | 
|  | 
 
| Kinglion 铂金会员
 
        痴迷DOS者
 
 
 积分 5798
 发帖 1924
 注册 2003-6-20
 来自 金獅電腦軟體工作室
 状态 离线
 | 
| 『第 8 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
同意第六层的意见.真正的机器码可是让人看了头痛不已的. 
比如以下的十六进制代码:
 
   B4  30  CD  21
 
 
 
 
 
 |  
                  |  熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
 金狮電腦軟體工作室愿竭诚为您服务!
 QQ群:8393170(定期清理不发言者)
 个人网站:http://www.520269.cn
 电子邮件:doujiehui@vip.qq.com
 微信公众号: doujiehui
 
 |  | 
|  2004-5-21 00:00 |  | 
|  | 
 
| aria 高级用户
 
     
 
 
 积分 924
 发帖 243
 注册 2003-7-9
 状态 离线
 |  | 
|  2004-5-21 00:00 |  | 
|  | 
 
| Backer 初级用户
 
   
 
 
 积分 112
 发帖 3
 注册 2004-5-18
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
5楼已经把这个程序分析得很清楚了,有以为楼主不知道什么是机器指令的朋友,请先看看5楼的回复再说。(留神看看数据段)
 
 
 
 
 
 |  | 
|  2004-5-25 00:00 |  | 
|  | 
 
| 六月飞雪 高级用户
 
     游客隐者
 
 
 积分 893
 发帖 201
 注册 2004-4-27
 状态 离线
 | 
| 『第 11 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
除了看不明白,其它的,都能明白 
 
 
 
 
 |  
                  |  ^-^     党和国家教导我们,看帖一定要回帖,做一个文明的网民.
 |  | 
|  2004-5-25 00:00 |  | 
|  | 
 
| ABO 初级用户
 
   
 
 
 积分 122
 发帖 6
 注册 2004-5-23
 状态 离线
 |  | 
|  2004-5-25 00:00 |  | 
|  | 
 
| CrazyWind 初级用户
 
   
 
 
 积分 131
 发帖 12
 注册 2004-3-2
 状态 离线
 | 
| 『第 13 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
某些人,这个的确是汇编。不过,代码已经体现了:把机器代码放到数据段,然后跳到数据段执行指令。
 
 那么你认为什么是机器指令,要不要把微指令也一起提一下~~
 
 
 
 
 |  | 
|  2004-6-2 00:00 |  | 
|  | 
 
| boblhh9999 中级用户
 
    
 
 
 积分 316
 发帖 74
 注册 2004-3-4
 状态 离线
 |  | 
|  2004-6-3 00:00 |  | 
|  | 
 
| jihao1234567 中级用户
 
    
 
 
 积分 258
 发帖 58
 注册 2003-10-11
 状态 离线
 | 
| 『第 15 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
这工具没准大家用的上………………http://jihao1234567.go.nease.net/MNEMONIX.exe
 请大家用工具软件下载,开单线程。
 这个东西没准有些用处。
 好像是解释机器语言代码的………………
 
 
 
 
 
 |  
                  |  奋发向上!!!
 |  | 
|  2004-6-3 00:00 |  |