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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  --
  • 『姓名』:和叶
  • 『性别』:保密『发送消息
  • 个人说明:他强任他强,清风拂山岗;他横任他横,明月照大江;他自强来他自横,我自一口真气足。
  • 详细信息『加为好友』
最新评论
最新留言
文章收藏
友情链接

[2011-04-14 19:20] 研究试验5---函数如何接受不定数量的参数(4)

点击查看原图
下面我们来写myprintf函数。

首先我们要知道一个知识点就是,函数的参数是通过栈传递的,我们的printf函数接收的参数格式和printf函数一样,为(“%d”,4).

这样的话,入栈的就是4,然后是194h(存放字符串的首地址)。

那么我们就可以找到字符串,对字符串进行处理,程序如下:
void myprintf(char *,...);
---声明我们的函数
main()
{
    myprintf("%c %c %d dsd %s",'a','b',144,"hello world");
}
---主函数,其中参数要能打印144这样的类型,而且最后的...
阅读全文 | 评论次数(0) | 浏览次数(561) | 所属类型(默认类型)

[2011-04-14 16:36] 研究试验5---函数如何接受不定数量的参数(3)

这里研究printf函数,先写一个程序c.c如下:
main()
{
        printf("%d,%d,%c,%c",1,2,'a','b');
}
debug观察main处代码如下:
-u 01fa
153F:01FA 55            PUSH    BP
153F:01FB 8BEC          MOV     BP,SP
153F:01FD B86200        MOV     AX,0062---‘b’入栈
153F:0200 50            PUSH    AX
153F:0201 B86100        MOV     AX...
阅读全文 | 评论次数(0) | 浏览次数(511) | 所属类型(默认类型)

[2011-04-14 16:16] 研究试验5---函数如何接受不定数量的参数(2)

2.写一个程序b.c,分析b.c,深入理解相关的知识。
void showchar(int,int,...);
---申明一个函数,参数不定,第一个和第二个都是int型
main()
{
   showchar(8,2,'a','b','c','d','e','f','g','h');
---调用前面声明的函数
}
void showchar(int n,int color,...)
{
   int a;
   for(a=0;a!=n;a++)
   {
---第一个参数是数量n。
      *(char far *)(0xb8000000+160*10+80...
阅读全文 | 评论次数(0) | 浏览次数(556) | 所属类型(默认类型)

[2011-04-14 14:53] 研究试验5---函数如何接受不定数量的参数(1)

点击查看原图
编写一个程序,如下:
void showchar(char a,int b);
main()
{
        showchar('a',2);
}

void showchar(char a,int b)
{
        *(char far *)(0xb8000000+160*10+80)=a;
        *(char far *)(0xb8000000+160*10+81)=b;
}
用debug加载如下:
-u 1fa
153F:01FA 55            PUSH    BP
153F:01FB 8BEC          MOV     BP,SP
---上面两句是ma...
阅读全文 | 评论次数(0) | 浏览次数(569) | 所属类型(默认类型)

[2011-04-13 20:02] 研究试验4---不用main函数编程

点击查看原图
书上问的很详细,我们把这些问题全部回答完,也就基本掌握了这一节的知识。

1.编译连接不成功,思考以下问题,
(1)编译和连接哪个环节会出问题。
      ---连接阶段。
(2)显示出的错误信息是什么?
      ---undefined symbol ‘_main’ in module c0s.
     翻译成汉语是:在c0s模块中没有定义符号‘_main’.
(3)这个错误信息可能与哪个文件有关?
     ---c0s。

2.用link.exe连接f.obj,生成f.exe,用debug观察,思考以下问题?
(1)f.exe程序代码总共有多少字节?
 ...
阅读全文 | 评论次数(0) | 浏览次数(637) | 所属类型(默认类型)

[2011-04-13 18:19] 研究实验3---使用内存空间(2)

点击查看原图
下面接着看第三个程序例子um3.exe:
-u 01fa
1540:01FA 55            PUSH    BP
1540:01FB 8BEC          MOV     BP,SP
---这两句的作用是保护bp,同时把sp赋给bp,按照以往的经验,出现这种指令一般是要对栈中数据进行操作。

1540:01FD 83EC06        SUB     SP,+06
---把sp往上提了6个字节,留了3个字的空间
1540:0200 C706A601A100  MOV     WORD PTR [01A6],00A1
1540:0206 C706A801...
阅读全文 | 评论次数(0) | 浏览次数(601) | 所属类型(默认类型)

[2011-04-13 16:08] 研究试验3---使用内存空间(1)

点击查看原图
前面研究了使用寄存器来存储数据,但是寄存器只有十几个,所以这里我们学习使用内存空间,补充一句,变量的实质其实也是内存空间。

首先要知道,在书上第8章的时候,讲对数据的处理,要指导数据的两个基本属性,一是数据在什么地方,即数据的地址;二是数据有多长,也就是数据的数据类型。

对于寄存器,就需要给出寄存器的名称,寄存器的名称中也包含了它们的数据类型信息。

对于内存空间,就需要给出地址(准确的说,就是内存空间的首地址)和空间存储数据的类型。

接着还要知道‘*’操作符的内涵,就是表明数据是一个地址。书上给了例子,如

*(char *)0x200='a'

首先0x200...
阅读全文 | 评论次数(0) | 浏览次数(541) | 所属类型(默认类型)

[2011-04-12 17:58] 研究试验2---使用寄存器

点击查看原图
这一节我们讨论“C语言中变量是否必须的”。首先回忆汇编中是用什么来存储数据的,汇编中我们主要用寄存器和内存单元,最后17章的数据标号有点类似变量,但实质还是内存单元。

首先来看tc2.0提供的寄存器,这里注意这些寄存器是区分大小写的。

(1)编写程序ur1.c,编译连接,生成ur1.exe。
main()
{
        _AX=1;
        _BX=1;
        _CX=2;
        _AX=_BX+_CX;
        _AH=_BL+_CL;
        _AL=_BH+_CH;
}
(2)用debug加载ur1.exe,用u命令查看url.c编译后的机器码和汇编代码。如下:
-u
1540:000...
阅读全文 | 评论次数(0) | 浏览次数(550) | 所属类型(默认类型)

[2011-04-12 17:13] 研究试验1---搭建一个精简的C语言开发环境

点击查看原图
这个综合研究比较简单,按照书上的步骤,搭建成功环境即可。
(1)在d盘建立一个目录,名为tc2.0。

(2)在c盘建立一个目录,名为minic。这个目录用来存放我们已知的解决问题要用到的程序和文件。

(3)把tc2.0中的tc.exe拷到c:\minic文件夹下,开始研究。

(4)运行tc.exe。

这里为了避免软件默认的搜索路径对我们实验的影响,要把tc的direction设置为当前路径,即设置为c:\minic,然后用save options 来保存设置。

(5)在tc.exe环境中编辑程序simple.c,保存到c:\minic下。
程序是:
main...
阅读全文 | 评论次数(0) | 浏览次数(552) | 所属类型(默认类型)

[2011-04-12 16:32] 综合研究1、2、3、4、5前要知道的

点击查看原图
在第二版的《汇编语言》第314页,综合研究四个字的题目下有这样几个字:

本书将启示我们如何进行独立研究和深度思考。同时,使我们:
(1)认识到汇编语言对于深入理解其他领域知识的重要性。
(2)对前面所学习的汇编语言知识进行融汇。
(3)对用研究的方法进行学习,进行体验。

在以后的综合研究中,要注意这三方面的思考和体验。

接着提出三个问题,

(1)人们用C语言编程时都要用变量,我们就非用不可吗?
(2)C语言规定用户写的程序从main函数开始,我们就非要用main函数吗?
(3)printf函数可以接受不定数量的参数,我们就不怀疑了吗?

而后面的综合研究1...
阅读全文 | 评论次数(0) | 浏览次数(530) | 所属类型(默认类型)
『 查看更多文章 』