汇编网首页登录博客注册
aten的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2009-04-19 23:13] 研究试验2 使用寄存器

(1)编写一个程序ur1.c
main()
{
 _AX=1;
 _BX=1;
 _CX=2;
 _AX=_BX+_CX;
 _AH=_BL+_CL;
 _AL=_BH+_CH;
}
把这个程序保存在minic下,然后,编译,连接,生成ur1.exe.
(2)用Debug加载ur1.exe,用命令查看ur1.c编译后的机器码和汇编代码。
   思考:main函数的代码在什么段中?用Debug怎样找到ur1.exe中main函数的代码?
  分析:我用debug加载ur1.exe,用命令查看代码,发现完全看不出和ur1.exe有什么关系!……
(3)用下面的方法打印出ur1.exe被加载运行时,main函数在代码段中的偏移地址;
main()
{
 printf("%x\n",main);
}
思考:为什么这个程序能打印出main函数在代码段中的偏移地址?
分析:打出来的main的地址为1fa.根据以前学的汇编,我认为main只是一个标号,代表一个地址!

(4)用debug加载ur1.exe,根据上面打印出的main函数的偏移地址,用u命令查看main函数的汇编代码。仔细找到ur1.c中每条C语句对应的汇编代码。
查看的代码如下:
K:\minic>debug url.exe
-u1fa
141A:01FA 55            PUSH    BP
141A:01FB 8BEC          MOV     BP,SP
141A:01FD B80100        MOV     AX,0001
141A:0200 BB0100        MOV     BX,0001
141A:0203 B90200        MOV     CX,0002
141A:0206 8BC3          MOV     AX,BX
141A:0208 03C1          ADD     AX,CX
141A:020A 8AE3          MOV     AH,BL
141A:020C 02E1          ADD     AH,CL
141A:020E 8AC7          MOV     AL,BH
141A:0210 02C5          ADD     AL,CH
141A:0212 5D            POP     BP
141A:0213 C3            RET

(5)通过main函数后面有ret指令,我们可以设想:C语言将函数实现为汇编语言中的子程序。研究下面程序的汇编代码,验证我们的设想。
程序ur2.c
void f(void);
main()
{
 _AX=1; _BX=1; _CX=2;
  f();
}
void f(void)
{
 _AX=_BX+_CX;
}

编译,连接后,用debug加载,查看代码,代码如下:
K:\minic>debug ur2.exe
-u1fa
141A:01FA 55            PUSH    BP
141A:01FB 8BEC          MOV     BP,SP
141A:01FD B80100        MOV     AX,0001
141A:0200 BB0100        MOV     BX,0001
141A:0203 B90200        MOV     CX,0002
141A:0206 E80200        CALL    020B
141A:0209 5D            POP     BP
141A:020A C3            RET
141A:020B 55            PUSH    BP
141A:020C 8BEC          MOV     BP,SP
141A:020E 8BC3          MOV     AX,BX
141A:0210 03C1          ADD     AX,CX
141A:0212 5D            POP     BP
141A:0213 C3            RET
评论次数(3)  |  浏览次数(1152)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2009-04-20 10:25  ]

怎么看不出博主研究的结果啊?

[  wsrf   发表于  2009-04-20 17:32  ]

博主有什么想法可以贴出来吗

[  aten   发表于  2009-04-20 19:33  ]

因为只学习了一点,理解比较浅,只是表面上的!还待进一步学习去理解!谢谢大家的建议!上面的研究我都写在分析里了!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码