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

我的博客

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

[2008-11-01 12:31] [转载]com和exe文件结构

com和exe文件结构
1、com文件结构及原理
     com文件结构比较简单,它包含程序的一个绝对映像,即为了运行程序准确的处理器指令和内存中的数据,MS-DOS通过直接把该映像从文件直接复制到内存,从而加载com程序,而不做任何改变。
     为加载一个com程序,MS-DOS首先试图分配内存,因为com程序必须位于一个64KB的段中,所以com文件的大小不能超过65024(64KB减去用于PSP的256B和用于一个起始堆栈的至少256B)。如果MS-DOS不能为程序、一个PSP、一个起始堆栈分配足够的内存,则分配尝试失败。否则,MS-DOS分配尽可能多的内存(直至所有保留内存...
阅读全文 |   作者:bpo | 评论次数(0) | 浏览次数(857)

[2008-09-25 11:53] [转载]计算机启动过程

计算机启动过程

打开电源启动机器几乎是电脑爱好者每天必做的事情,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些启动画面时都做了些什么工作呢?相信有的朋友还不是很清楚,本文就来介绍一下从打开电源到出现Windows的蓝天白云时,计算机到底都干了些什么事情。

       首先让我们来了解一些基本概念。第一个是大家非常熟悉的BIOS(基本输入输出系统),BIOS是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能。BIOS包括有系统BIOS(即常说的主板BIOS)、显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的 BI...
阅读全文 |   作者:bpo | 评论次数(5) | 浏览次数(1437)

[2008-02-19 01:16] 寄存器

寄存器是中央处理器内的其中组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 

      寄存器是内存阶层中的最顶端,也是系统操作资料的最快速途径。寄存器通常都是以他们可以保存的 位元 数量来估量,举例来说,一个 "8 位元寄存器" 或 "32 位元 寄存器"。寄存器现在都以寄存器档案的方式来实作,但是他们也可能使用单独的正反器、高速的核心内存、薄膜内存以及在数种机器上的其他方式来实作出来。  

      寄...
阅读全文 |   作者:101319007 | 评论次数(1) | 浏览次数(979)

[2008-09-23 09:32] 如何实时得到java object占用的空间

Java有一个很好的地方就是java的垃圾收集机制,这个机制集成于jvm的,对程序员来说是隐藏且不透明的。这种情况下,如何得到某个对象消耗的内存呢?
曾经看到过有人用以下方法来计算:在生成该object的前后都调用java.lang.Runtime.freeMemory()方法,然后看两者之差即为该object消耗的内存量。
这种方法的代码是:
long totalMem = java.lang.Runtime.freeMemory();
Object myBigObject = null;
System.out.println("You just got rid of " + to...
阅读全文 |   作者:sysnap | 评论次数(0) | 浏览次数(477)

[2008-01-06 17:51] 汇编揭秘C中的参数传递

汇编揭秘C中的参数传递

文章作者:cook702
很多学习汇编的朋友想必对C也比较了解,因为在当前大学的课程体系里,它很有可能就是你接触到的第一门编程语言。由于对计算机的理解不够,学习时必定会遇到各种问题。有些问题是你通过思考就可以解决的,而更多的问题则是你无从思考,就好像它天生就是这样,你只要记住就OK了。然而这样的学习方式是机械的,更是没有创造力的。只有真正理解了C语言,你才有能力去驾驭它,否则它和你之间永远会隔着一层窗户纸,虽然很薄,但是你永远也捅不透。这是为什么呢?其实道理很简单,就好比在一个公司有现成的代码库可以调用,有的程序员遇到问题时,他唯一可作的就是调用代码库中的功能模...
阅读全文 |   作者:abcabc | 评论次数(0) | 浏览次数(334)

[2008-03-04 08:53] assume的作用探讨【转】

ASSUME是把你自己定义的DATA段和CPU中的CS段连起来的意思,这样,CS就指向了你所定义的DATA段了。见《汇编语言》(王爽)P73 
p278 16.2小节中的内容。 

http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=free&kind=1220&qkSg=2&qID=7172&readSg=1 
关于assume的作用,许多人都简单的解释说,这是告诉编译器哪一个段和哪一个段寄存器相关联。举个简单例子来说: 
assume cs:code, ds:data 
这是告诉编译器cs和code关联,ds和data关联,...
阅读全文 |   作者:abcabc | 评论次数(11) | 浏览次数(8489)

[2008-01-10 20:40] 发现王爽老师写的一个教学的操作系统,和大家共享

早就听说王爽老师写了一个用于操作系统教学的系统--Toyix,今天偶然间发现了相关的网站,和大家共享。
http://www.toyix.net/

进程间通信----进程并发运行就涉及到进程对资源的争夺问题,下面用向屏幕输出字符来说明这个问题。程序如下: 

#include <toyix.h> 
void f1()
{
        int i;
        for(i=0; i < 80; i++)
        {
                gotoxy(i,7);
                delay(60);
             ...
阅读全文 |   作者:faseter | 评论次数(69) | 浏览次数(13199)

[2008-01-11 16:56] 看到“为什么要有操作系统”显示程序比较,经典

为什么要有操作系统[转] http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=7148&kindId=7747&postId=8845&readSg=1

问题1:向显示器上输出一个字符串: 
    A、没有操作系统的情况下:     
    至少要了解以下信息:1) 显存地址  2) 显存结构 
    mov ax,seg str 
    mov ds,ax                          
    mov si,offset str                  
    mov...
阅读全文 |   作者:mouse | 评论次数(3) | 浏览次数(479)

[2008-12-09 10:10] com和exe文件结构

摘自《计算机病毒及其防治技术》,程胜利等编著,清华大学出版社。

1、com文件结构及原理
     com文件结构比较简单,它包含程序的一个绝对映像,即为了运行程序准确的处理器指令和内存中的数据,MS-DOS通过直接把该映像从文件直接复制到内存,从而加载com程序,而不做任何改变。
     为加载一个com程序,MS-DOS首先试图分配内存,因为com程序必须位于一个64KB的段中,所以com文件的大小不能超过65024(64KB减去用于PSP的256B和用于一个起始堆栈的至少256B)。如果MS-DOS不能为程序、一个PSP、一个起始堆栈分配足够的内存,则分配尝试失败。否则,MS...
阅读全文 |   作者:mouse | 评论次数(3) | 浏览次数(1539)

[2009-05-07 12:26] CONST

[编辑本段]C中的CONST
  C中CONST的使用:
  const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。
  虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。
  问题:const变量 & 常量
  为什么下面的例子在使用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢? 
  const int n = 5;
  int a[n];
 ...
阅读全文 |   作者:mouse | 评论次数(1) | 浏览次数(1321)

[2009-04-20 16:38] 显示图形如何避免闪烁

显示图形如何避免闪烁,如何提高显示效率是问得比较多的问题。  
  而且多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。  
  MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,  
  只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。  
  我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈  
  我的一些观点。  
   
  1、显示的图形为什么会闪烁?  
        我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏  
  幕显示时是由OnPaint进行调用的。当窗...
阅读全文 |   作者:vvlive | 评论次数(1) | 浏览次数(1203)

[2008-02-19 01:01] 相同的汇编指令VS不同的机器代码 分析

01c0 add ax,ax
03c0 add ax,ax
简单的来说,就是 01 03都是add
01d8  add ax,bx
03c3  add ax,bx
简单的来说
就是 01 03都是add
    d8 c3 是bx+ax 结果放入 ax
          和ax+bx 结果放入 ax
具体分析在图里

谁来写篇仔细的教程啊,偶 ,困了,晕了,睡了。

看懂的跟些自己造出来的类似情况。...
阅读全文 |   作者:feiwei | 评论次数(6) | 浏览次数(2111)

[2009-01-25 11:20] _BSS BSS (摘录)

  是“Block Started by Symbol”的缩写,意为“以符号开始的块”。
  BSS是Unix链接器产生的未初始化数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。“以符号开始的块”指的是编译器处理未初始化数据的地方。BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序的二进制映象文件中并不存在。
  在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by S...
阅读全文 |   作者:feiwei | 评论次数(5) | 浏览次数(1187)

[2010-01-27 22:56] 系统告诉我三天上了!!

恩恩,这几天好多考试,系统告诉我三天没上了,我可是天天中午在编程
  好先给个位映像画像素的程序,恩恩,IBMPC给的台简略了,连清屏都没告诉,害我高了好久
DATA SEGMENT
XCOR DW 200
XCOR1 DW 200
YCOR DW 200
DRAW DB  00H,18H,00H,00H,3CH,00H,7FH,0FFH,0FEH,00H,18H,00H,00H,3CH,00H,7FH,0FFH,0FEH,00H,18H,00H,00H,3CH,00H,7FH,0FFH,0FEH
YANMA DB 0
BYTEADDR DW 0
COUNTER DB 03H...
阅读全文 |   作者:aweravatar | 评论次数(0) | 浏览次数(647)

[2008-08-22 14:45] 一些缩写原型

在论坛上看到的,收藏先~

寄存器 =Register 

80x86(Intel系列)CPU提供了几个通用寄存器。其中包含八个32位寄存器,如下所示,E’代表扩展(extended): 
EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP 

16位数据寄存器: 
AH & AL =AX   累加寄存器,常用于运算       助记 Accumulator 
BH & BL =BX   基址寄存器,常用于地址索引   助记 Base 
CH & CL =CX   计数寄存器,常用于计数       助记 Count 
DH & DL =DX   数据寄存器,...
阅读全文 |   作者:musicvs | 评论次数(0) | 浏览次数(976)

[2008-09-17 12:04] 关于无符号和有符号数的解释(转)

一、只有一个标准! 

在汇编语言层面,声明变量的时候,没有 signed  和  unsignde 之分,汇编器统统,将你输入的整数字面量当作有符号数处理成补码存入到 计算机中,只有这一个标准!汇编器不会区分有符号还是无符号然后用两个标准来处理,它统统当作有符号的!并且统统汇编成补码!也就是说,db -20 汇 编后为:EC ,而 db 236 汇编后也为 EC 。这里有一个小问题,思考深入的朋友会发现,db 是分配一个字节,那么一个字节能表示的有符号整 数范围是:-128 ~ +127 ,那么 db 236 超过了这一范围,怎么可以?是的,+236 的补码的确超出了一个字节的表示范围,...
阅读全文 |   作者:musicvs | 评论次数(0) | 浏览次数(1004)

[2008-11-22 12:21] 编译型语言VS解释型语言

将高级语言翻译成机器语言有两种方式:编译和解释。二者区别在于翻译的时间不同。
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。因此效率比较高。比如C语言。
解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程序,每个语句都是执行的时候才翻译。
 
C语言是编译型的。
Java比较特殊,Java程序也需要编译,但是没有直接编译成机器语言,而是编译成字节码,然后用解释方式执行字节码。
C程序——>机器语...
阅读全文 |   作者:acool | 评论次数(2) | 浏览次数(631)

[2009-08-10 22:18] 汇编语言源程序框架结构和格式规范

作为符号化机器语言及受段结构的影响,汇编语言源程序的结构和可读性都无法和高级语言相比。不过把汇编语言源程序共有的元素剥离出来,并稍加整理和熟悉,会发现情况会比先前清晰很多。
    汇编语言源程序大致包含下列 6 个“框架”元素:

;①容量足够且固定的“通用”堆栈段:
stck    segment stack 'stack'
        ;80H的栈深度足以应付一般应用程序对堆栈的需求 
        dw         80h dup(0)         
stck    ends 

;②空数据段
data    segment 

data    ends 
...
阅读全文 |   作者:scuzg | 评论次数(7) | 浏览次数(2044)

[2009-12-29 00:04] 通过反汇编代码解读指针和引用的内在机理

试图用中文、英文等自然语言将 C++ 的指针和引用的异同描述得简练、通透是一件困难的事情,而阅读包含指针和引用的反汇编代码是一个好办法:这绝对是一种无二义性和尽可能简练的陈述。
    比如下述代码
void main(void)
{        
    int x1=0,*ptrx1=&x1;
    int x2=0,&refx2=x2;

    (*ptrx1)++;    //关注对变量的操作
    refx2++;

    printf("x1=%d,x2=%d\n",x1,x2);
}
执行后,通过指针及引用对变量的间接操作使 x1 和 x2 都增加了 1 ,不...
阅读全文 |   作者:scuzg | 评论次数(0) | 浏览次数(996)
页码数(3):  1  2  3