幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2605|回复: 0

[通用编程] 问个简单的C程序对应的汇编

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2009-5-20 11:42:36 | 显示全部楼层 |阅读模式
就是这样一个简单的C程序,对应的汇编代码如此之长,看了半天没看懂。
怎么好像看不到有向数组分配1,2,3之类的代码呢?
麻烦大大们能帮我翻译下下面的汇编程序。


void main(void)
{
    int i;
   
    int a[3]={1,2,3};
   
}

/*
;栈0bef:0060
0B76:01FA 55            PUSH    BP
0B76:01FB 8BEC          MOV     BP,SP   ;bp入栈 ,这里BP=7E
0B76:01FD 83EC06        SUB     SP,+06  ;栈预留3个字单元
0B76:0200 16            PUSH    SS      ;ss入栈  ss=0bef     bp-3个字-ss
0B76:0201 8D46FA        LEA     AX,[BP-06] ;预留位第一位地址送入AX,ax=78
0B76:0204 50            PUSH    AX      ;bp-3个字-ss-第一个字的地址
0B76:0205 1E            PUSH    DS      ;bp-3个字-ss-第一个字的地址-ds
0B76:0206 B89401        MOV     AX,0194
0B76:0209 50            PUSH    AX      ;bp-3个字-ss-第一个字的地址-ds-0194
0B76:020A B90600        MOV     CX,0006
0B76:020D 9A6C05760B    CALL    0B76:056C
0B76:0212 8BE5          MOV     SP,BP
0B76:0214 5D            POP     BP
0B76:0215 C3            RET
                                                                               7E
0B76:056C 55            PUSH    BP   ;bp-3个字-ss-第一个字的地址-ds-0194-cs-ip-bp
0B76:056D 8BEC          MOV     BP,SP ;006a
0B76:056F 56            PUSH    SI
0B76:0570 57            PUSH    DI
0B76:0571 1E            PUSH    DS  ;bp-3个字-ss-第一个字的地址-ds-0194-cs-ip-bp-si-di-ds
0B76:0572 C57606        LDS     SI,[BP+06]  ;把DS段,[bp+06]里的值送入SI

0B76:0575 C47E0A        LES     DI,[BP+0A] ;把段地址:偏移地址存到ESI. 该程序中把栈的段送入ES,[bp+0a]的值送入DI
                                           ;第一个字的地址送入di
0B76:0578 FC            CLD
0B76:0579 D1E9          SHR     CX,1       ;ds:si指向的值送入es:di
0B76:057B F3            REPZ
0B76:057C A5            MOVSW           
0B76:057D 13C9          ADC     CX,CX
0B76:057F F3            REPZ
0B76:0580 A4            MOVSB
0B76:0581 1F            POP     DS
0B76:0582 5F            POP     DI
0B76:0583 5E            POP     SI
0B76:0584 5D            POP     BP
0B76:0585 CA0800        RETF    0008


                                              |ds |    |si    | |di     | |bp    |   |IP   | |CS  |
0BEF:0060  00 00 00 00 66 0B 00 00-00 00 7E 00 12 02 76 0B
                       |AX   | |DS   | |AX   | |SS    |  |这开始留3字单元|  | bp |
0BEF:0070  94 01 66 0B 78 00 EF 0B-FD 01 76 0B 02 33 00 00
0BEF:0080  FB 52 08 02 EA 02 00 00-4E 00 1B 00 00 00 40 00
0BEF:0090  3F 00 0B 00 00 00 02 00-02 00 01 00 01 00 01 00
0BEF:00A0  3C 09 00 00 00 00 00 00-01 00 00 00 00 00 00 00
0BEF:00B0  01 00 00 00 21 01 00 00-00 02 00 00 00 A5 01 00
0BEF:00C0  00 00 03 00 00 00 E2 01-00 00 00 04 00 00 00 F8
0BEF:00D0  01 00 00 00 05 00 1A 00-FA 01 00 00 18 06 00 00


0B66:0194                          72 28 03 3e-a0 01 72 22 b1 04 d3 ef

*/
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-26 01:02 , Processed in 0.027617 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表