MASM6.14从傻瓜到入门
MASM6.14从傻瓜到入门最近有网友向我询问如何使用MASM6.14,其实我也不是很懂,只是对一些常用的功能有所了解。
对于一些常见的问题,这一点点可怜的知识还是勉强可以解决的。
所以本文只是从最浅显的方面谈一下MASM6.14的用法,只是能让读者入门而已。
本文将分成几个部分来叙述。
1.ML的参数问题在编译的时候主要使用的是ML.EXE,因此,我们的重点将集中在这个程序上。
ML.EXE的使用格式如下:ML [ /options ] filelist [ /link linkoptions ]下面简单解释一下一些常用的编译选项,因为绝大多数参数我也没有用过,所以,我不能保证解释的正确性,如果你发现了什么错误,欢迎来信告诉我。
/AT :允许小模式/Bl :指定链接器/c :只编译,不链接/Cp :保留用户标识符的大小写/Cu :所有标识符映射为大写/Cx :用public或者extrn引用的标志符保留大小写/coff :产生coff格式的目标文件/F :设置堆栈长度/Fe :命名可执行程序/Fo :命名目标文件/FPi :对80x87指令进行软件仿真/G :使用Pascal,C或者stdcall调用/I :添加包含文件的路径/WX :视警告为错误/W :设置警告级别/Zd :在调试信息中添加行标号/Zf :使所有符号变为PUBLIC类型/Zi :在调试信息中添加符号信息/Zm :与MASM5.10兼容/Zp[n] :设置结构的对齐方式/Zs :只进行语法检测上述内容只是从帮助文件中翻译过来的,很不全面,也不一定正确,有兴趣的朋友可以看一下原文。
其实绝大多数参数是根本用不上的,我很少使用汇编去编写一个完整的程序,通常是使用高级语言编译器来辅助的。
因为现在的高级语言都有着非常强大的编译和调试的功能,所以汇编语言的编译器只要提供一些必要的功能就可以了。
2..xmm和.k3d现在一些单指令多数据技术十分流行,其中尤以intel公司的Streaming SI MD Extensions 和AMD公司的3DNow为最。
MASM6.14可以支持这两种指令集。
在程序文件首加入.xmm表示需要编译器提供对Streaming SIMD Extensi ons指令集的支持。
如果你想学习SSE指令可以看一下《全面优化Pentium III》一文,那里面对所有SSE指令作了简单的解释。
在程序文件首加入.k3d表示需要3DNow的支持。
不过使用3DNow指令没有必要依赖MASM,你可以在VC中直接使用。
虽然VC并不支持3DNow指令的内联汇编,但是AMD的工程师是非常聪明的,他们想出了一种很好的办法,可以让你在VC 中用类似于内联汇编的方法使用3DNow指令。
他们的方法是使用带参数的宏,直接在代码中内嵌3DNow指令的二进制代码。
你可以从本站下载AMD 3DNow的SDK,里面有一些必要的头文件和库文件。
3.符号的命名规范完全使用汇编语言编写程序是不切实际的,也是根本没有必要的。
大概只有两种情况需要用到汇编:要求很高的执行效率或者需要执行系统底层的功能。
因此,我们在多数情况下还是要用高级语言的,只是在关键的部分使用汇编语言,这就要求我们必须知道如何将高级语言和汇编语言结合起来。
如果使用内联汇编那就简单的多了,只要加入asm关键字就可以了。
不过,有些指令是不被内联汇编所支持的,这就使得我们不得不编写真正的汇编程序文件。
汇编语言和高级语言的命名规范是不太一样的,必须正确命名汇编文件里的标识符,这样才能够在高级语言中正常调用。
下面简要介绍一些常见的命名原则:(1)为程序段命名在C语言中,代码段都是以“_TEXT”作为段名的,数据段是用“_DATA”作为段名的。
这条规则在Pascal中也是适用的。
下面是一个例子:_TEXT segment public use32 'CODE'_TEXT ends这段程序定义了一个代码段,use32告诉编译器生成32位代码。
(2)为标识符命名C语言在编译以后,为所有的标识符添加了一条下划线作为前缀。
如果你想在汇编语言中引用在C程序中定义的变量或函数,就必须也加上一条下划线。
如果你使用的是C++编译器,那么还要注意一点,你一定要使用C链接才能使标识符符合上述命名规范。
下面就是一个例子://这是在C语言中的定义方法extern "C"{int hello;};;这是在汇编语言中进行引用extrn _hello;...其它的代码;............mov _hello, 0(3)函数调用变量的命名还是比较简单的,为函数命名就要考虑更多的问题了。
不仅仅是要添加下划线,还要考虑调用规范,有时甚至要弄清楚各个编译器的命名原则。
下名列出一些常用的调用规范(这些规范只适用于C链接):__cdecl这种调用规范比较简单,只要在变量名前面加上下划线就可以了。
而且,这种调用方式在任何编译器中都是相同的。
详细规则如下:参数从右向左入栈由调用者管理参数出栈添加下划线作为前缀__stdcall很多Windows API都是使用这种调用方式,它比较节省空间。
参数从右向左入栈由被调用者负责参数出栈添加下划线作为前缀,加@n作为后缀,其中“n”为参数的字节数。
(如果使用C++Builder,则无需添加前后缀,直接使用)__fastcall这是利用寄存器传输参数的调用方式。
如果使用VC,那么前两个参数传给ECX和EDX寄存器,剩下的从右向左入栈;如果使用C++Builder,那么前三个双字依次通过EAX,EDX和ECX寄存器传送,其它的从右向左入栈。
由被调用者负责参数出栈添加"@"作为前缀,加"@n"作为后缀,其中“n”为参数的字节数。
(如果使用C++Builder,则无需添加后缀,只需“@”作为前缀)__msfastcall这是Inprise公司为了和微软的调用规范兼容而采用的一个特别的关键字。
实际上,没有必要在VC中使用__fastcall,以我的个人经验,这种方式在VC中没有得到很好的优化,执行效率反而会降低。
在高级语言中使用MASM6.14我们可以使用一些方便的办法来把汇编语言的编译器和高级语言的开发环境有效地结合起来,每次编译都使用命令行是不明智的。
在VC中的使用方法VC提供了一些支持,可以自动的编译汇编文件,你可以按照以下步骤进行:在菜单中选择“Project | Settings...”选中指定的汇编文件(单击即可)选中Custom Build页在Commands中输入:如果是DEBUG模式,则输入:e:\masm32\bin\ml /c /coff /Zi /FoDEBUG\$(InputName).obj $(InputPath)如果是RELEASE模式,则输入:e:\masm32\bin\ml /c /coff /FoRELEASE\$(InputName).obj $(InputPath)在Outputs中输入:如果是DEBUG模式,则输入:DEBUG\$(InputName).obj如果是RELEASE模式,则输入:RELEASE\$(InputName).obj如果你的没有把masm安装在E盘,则要作相应的修改。
相应的参数还有必要再解释一下:“/c”表示只编译不链接。
“/coff”表示生成coff格式的目标文件,这是在VC 中使用的文件格式。
“/Zi”表示需要产生符号信息,便于调试。
在C++Builder中的使用方法我没有找到好方法!C++Builder使用它自带的TASM,不过该编译器不支持最新的指令集。
如果你想在C++Builder中使用MASM,建议你用批处理命令进行编译,然后把目标文件添加到工程文件里来。
以上内容,仅供参考,如有叙述不当之处,希望各位网友不吝赐教。
以上内容为转载: /articles/masmhelp/index.html我做了些补充说明对于console 程序的汇编,也就是链接选项中有/SUBSYSTEM:CONSOLE 的使用Win32 Console Application 来编译汇编1 新建一个Win32 Console Application 的工程2 加入汇编文件3 在project -> settings 选中指定的汇编文件(单击即可),选中Custom Buil d页在Commands 中和Outputs 中分别输入:对DEBUGg:\masm32\bin\ml /c /coff /Zi /FoDEBUG\$(InputName).obj $(InputPath)DEBUG\$(InputName).obj对RELEASEg:\masm32\bin\ml /c /coff /FoRELEASE\$(InputName).obj $(InputPath) RELEASE\$(InputName).obj注意我的masm32是安在g:\下的,这里根据不同情况可能需要更改。
对于sdk 程序的汇编,也就是链接选项中有/SUBSYSTEM:WINDOWS 的使用Win32 Application 来编译汇编1 新建一个Win32 Application 的工程其他步骤同console注意,如果想使用vc的debug来进行源码级的调试,必须有编译选项/Zi 。
另外,还可以用vc的makefile来建工程,然后自己写makefile,进行编译和调试,不过比用上面的方法麻烦。
以上内容亦为转载:/forum/viewtopic.php?t=54以下内容:为Crige本人在应用过程中发现的应注意的问题:1)“g:\masm32\bin\ml /c /coff /Zi /FoDEBUG\$(InputName).obj $(Input Path) DEBUG\$(InputName).obj”中的字符串“$(InputName)“与”InputPath“应保持原样,而不应改动;其也可通过设定来自动添加,如点击Driectory按钮选Input选项即可自动输入$(InputName),点File按钮选Input Path选项即可自动输入$(InputPath);2)在编译时提示找不到"windows.inc"等头文件及库文件的解决方法:打开菜单Tools/Options 转到Directories选项卡,在Show directories for中选Include files,点添加(就是那个框型的图标),选好路径如“e:\masm32\inlcude",然后通过点击向上箭头按钮,把“e:\masm32\inlcude"移到最上面来,其实这一项不移也可以,编绎器也会找到的,因为VC用的头文件与MASM用的头文件的扩展名不同啊,同理,Show directories for中选Libries files,点添加(就是那个框型的图标),选好路径如“e:\masm32\lib",然后通过点击向上箭头按钮,把“e: \masm32\lib"移到最上面来,这一项我建议还是移到最前面好,因为编绎器首先会链接MASM的库文件,否则的话,就会先链接VC的库文件了,这样虽然编绎也可通过,生成的OBJ文件我没有比较过是否相同,哈哈,经过测试对生成E XE文件没什么影响啊。
不要把MASM32开发环境和MASM汇编器版本搞混了!
不要把MASM32开发环境和MASM汇编器版本搞混了!MASM32是一个为那些对学习或者编写32位微软汇编(MASM)感兴趣的程序员提供的工作环境,它最流行的版本是8.0版,而我所知道最新版本是9.0版。
但是请大家一定要注意,这里的8.0版和9.0版不是指MASM编译器(即ML)的版本,而是MASM32开发环境的版本。
经常看到网上有网友发的贴把这两个概念都搞混了。
那么MASM(ML)编译器的版本到底有哪些呢?教学上常用的版本是 5.0版的,之前还有个 4.0版的记得“全国计算机等级三级考试”就是用的 4.0版。
5.0版之后有个 5.1版本,在这之后,从 6.0版开始MASM就改名ML了,因为它把编译和连接组合在一起了。
而且 6.0版还对汇编语言进行了大幅改造,使之支持高级语言的很多特性。
6.0版之后常看到的就是6.11、6.13、6.14MASM32(V8.0和V9.0)就是包含有ML6.14版,而不是ML8.0版。
6.14之后就是6.15但不常见,我手头上有6.15的ML,有兴趣的朋友可以向我索取或点此处进入下载。
但Microsoft从 6.15版开始好象就不再单独发布MASM的开发工具包了。
以后的ML还有7.0、7.1版,最新的是ML8.0版。
但它们都只包含在Visual 和Visual Studio 2005里面。
而且如果你安装了Visual Studio 2005的64位开发环境,你将得到一个MASM for x64 (ml64.exe)哈哈,各位这可是支持Intel 和AMD的64位CPU的汇编语言编译器!有志于64位底层开发的赶快去试用看看吧。
MASM 4.00这是最先广泛使用的一个 MASM 版本,适用于 DOS 下的汇编编程。
它很精巧,但使用起来不是很智能化,需要用户自己一板一眼地写出所有的东西。
很多教科书上讲的 8086 汇编语法都是针对这个版本的,对程序员来说。
它只比用 Debug 方便一点点MASM 5.00MASM 5.00 比 4.00 在速度上快了很多,并将段定义的伪指令简化为类似 .code 与 .data 之类的定义方式,同时增加了对 80386 处理器指令的支持,对 4.00 版本的兼容性很好MASM 5.10对程序员来说,这个版本最大的进步是增加了对 @@ 标号的支持。
汇编语言程序的上机过程
汇编语言的上机过程汇编语言程序的上机过程包括编辑、汇编、连接和执行这四个步骤。
汇编程序我们提供宏汇编程序MASM5.0和MASM6.14两个版本。
1、建立源程序文件建立和编辑汇编语言源程序可以使用EDIT、记事本、写字本,也可以使用TC等来输入源程序。
保存时,源程序文件的扩展名必须是ASM。
练习:(1)在DOS下用编辑软件EDIT建立如下源程序文件,将文件保存为Hello.ASM,保存在MASM5目录下。
(调用命令“C:\EDIT”进入EDIT编辑器。
)源程序文件如下:DSEG SEGMENTMESSAGE DB 'HOW DO YOU DO?',0DH,0AH,24HDSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGBEGIN:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESSAGEMOV AH,9INT 21HMOV AH,4CHINT 21HCSEG ENDSEND BEGIN(2)编程计算1+2+3+ ……+100,和放在AX寄存器中,要求用循环实现。
对于MASM5.0和MASM6.14两个版本,编译和连接的方法有所不同。
以下分别就两个版本的编译和连接的方法进行讲解。
如果使用MASM5.0的话,操作方法如下(以HELLO.ASM源程序文件为例):2、对源程序进行汇编,生成目标文件HELLO.OBJ。
操作:(1)在DOS下进入MASM5.0的目录,如C:\MASM5>(2)敲入命令: MASM HELLO说明:.obj文件:目标代码文件,纯二进制代码文件,不能直接显示在屏幕上。
.lst文件:包含源程序中各语句及其对应的目标代码,各语句的偏移量等相关信息,对调试程序有帮助,但一般情况不需要。
.crf文件:交叉索引文件,给出源程序中定义的符号引用情况,初学时不需建立。
3、连接目标文件,生成执行文件HELLO.EXE,操作:敲入命令LINK HELLO说明:.EXE文件:可执行文件.MAP文件:连接映象文件,包括各个段在存储器中的分配情况,初学时不需要。
工业微型计算机的实验方法
利用debug调试程序
首先装载被调试程序 使用命令查看寄存器或内存区域等程序 状态信息 修改内存区域的值; 运行程序:单步运行、断点运行等; 查看程序代码列表;
实验步骤
1. 2.
debug hello.exe装载hello.exe 利用命令:R 显示各寄存器的内容和下一 条要执行的指令。请查看各寄存器的当前值。
实验步骤
利用执行命令G可以设置断点执行被调 试程序。 -G=元中的字符串信息。
-D 0 L20
9. 10. 11.
R命令查看并指定的修改寄存器内容。 R设置标志寄存器的某个标记位。 A命令修改代码段中内存单元中的汇编 指令行。
一、建立工作环境
所使用的工具
实验一 汇编语言编程实验方法
——李振宁
一、实验的一般步骤
设计思想、 数据结构和算法
编辑(编辑器) 汇编语言源程序 文件*.asm 目标代码程序 文件*.obj 可执行程序 文件*.exe 调试(debug) 可执行程序 汇编 (masm.exe)
连接(link.exe)
准备工作
开始 运行 cmd 确定,进入dos平台。 在命令行下一次输入命令:
debug的退出
输入Q命令
quit
debug命令一览
A[地址] C[范围]地址 D[范围] E 地址 [字节值表] G [=起始地址] [断点地址表] H 数值 数值 I 端口地址 L [地址 [驱动器号 扇区号 扇区数]] M 范围 地址 N 文件标识符 O 端口 字节值 P [=地址] [数值] Q R [寄存器名] T[=地址][数值] U[范围] w[地址 [驱动器号 扇区号 扇区数]] S 范围 字节值表 汇编 内存区域比较 显示内存单元内容 修改内存单元内容 断点执行 十六进制加减 从端口输入 从磁盘读 内存区域传送 指定文件 向端口输出 执行过程 退出debug 显示和修改寄存器内容 跟踪执行 反汇编 向磁盘写 在内存区域搜索
MAS参考手册
中高移动互联应用平台参考手册CHE3003 – WD – 2007Version 3.0Approved by :Copyright © March , 2007 by mastudio Inc.This document and the information contained in it shall not be used, or published, or disclosed outside of mastudio in whole or in part without Mastudio’s consent. The copyright notice does not imply publication of this document.目录一、概要 (3)二、快速入门 (4)三、语法结构 (5)四、语法函数 (7)五、对象列表 (8)六、对象定义 (9)七、语法范例 (33)八、表达式 (38)九、事件接口 (39)十、资源文件 (40)十一、安全机制 (43)中高移动互联应用平台简称 MAS系统或则MASTUDIO无线终端设备指:智能手机、PDA一、概要中高移动互联平台实现各种手机和PDA等掌上设备,便捷访问本地局域网络的所有资源,包括数据库查询、办公文件批阅、文件浏览、文件上传和下载,让用户快速建立个性化的移动应用,系统采用智能客户端技术,一次部署终身免维护。
系统可以识别本地网络中各种常见的数据库,可以无缝挂接到已经运行的各种数据库应用系统、挂接各种办公应用系统,无需二次开发,无需改动原有的数据库应用,即可将本地数据库应用延伸到掌上。
系统与具体业务数据无关,可自定义业务流程和菜单,可自定义客户端界面,支持各种常用类型的数据库,自动识别各种类型的数据字段。
系统采用偶尔编程技术,系统定义有常见的功能组件,不需要进行编写程序即可使用,满足一般功能的需求。
在少些地方也可通过编写程序来实现复杂功能,MAS系统采用兼容BASIC语法规则。
什么是Win32
什么是Win32Win32是指你现在所使用的操作系统是32位的windows环境.编辑本段Win32的重要意义从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。
理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。
许多程序员从来没有学习过嵌入式系统领域著名的操作系统VxWorks,但是立马就能在上面做开发,大概要归功于平时在Win32多线程上下的功夫。
因此,学习Win32多线程不仅对理解Win32本身有重要意义,而且对学习和领会其它操作系统也有触类旁通的作用。
编辑本段进程与线程先阐述一下进程和线程的概念和区别,这是一个许多大学老师也讲不清楚的问题。
概念进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。
而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。
它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。
线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。
线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
二者关系线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。
线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。
MASM汇编语言基础
§4.3.4 数值返回运算符
数值返回运算符有5个,分别是:SEG、OFFSET、TYPE、 LENGTH和SIZE。这种运算符旳对象必须是存储器操作数,即 变量名或标号,经过运算后返回旳是一种数值。下面分别阐明各 运算符旳功能。
1.SEG
格式:SEG 变量名或标号
当运算符SEG加在一种变量名或标号前面时,汇编程序回送 旳运算成果是这个变量或标号所在旳段旳段基址;
③ 对于DD伪指令,仅可给两个字符构成旳字符串分配4个字节旳单元, 且这两个ASCII码是存储在两个低字节(存储顺序与DW伪指令相同)中, 两个高字节均存储00H。相当于定义一种双字。
(4)带DUP体现式:DUP是定义反复数据操作符,在操作数 部分旳格式为:
反复次数 DUP(反复旳内容)
DUP能够嵌套使用
图4.1 指令语句旳格式
一条指令语句有如下4个字段:
1.标号字段
这是一种可选字段。标号必须以“:”作为结束符。一种标号是 一条指令旳符号地址,它代表该指令旳第一种字节旳地址。
2.指令助记符字段
这是一条指令中不可缺乏旳主要成份。它表达这条语句要求 CPU完毕什么操作。
3.操作数字段
参加操作旳数据或地址。指令语句能够有一种操作数、两个操 作数或无操作数。
§4.4 程序旳段构造
§4.4.1 段定义伪指令 格式: 段名 SEGMENT
…… 段名 ENDS 一种完整旳汇编源程序中能够定义多种段,但同步起作用旳 最多只有4个。每一种段都是由伪指令SEGMENT开始,由ENDS 结束,SEGMENT和ENDS必须成对出现,而且在SEGMENT和 ENDS旳前面都必须有同一种段名;SEGMENT和ENDS语句之 间旳省略号部分,对于代码段来说,主要是指令,也能够有伪指 令;对于数据段、附加段和堆栈段来说,一般是存储单元旳定义、 分配等伪操作。
MASM
1.1 实验目的掌握汇编软件MASM的使用,熟悉汇编语言的上机过程。
1.2相关基础知识1.2.1汇编语言程序上机步骤1.汇编语言程序设计上机步骤汇编语言源程序的上机步骤包括编辑、汇编、链接、调试等几个过程,如图1-1所示。
图1.1 汇编语言源程序上机步骤2.汇编汇编是把用汇编语言编写的源代码程序翻译成计算机能够识别的二进制机器语言程序。
目前常用的汇编程序是MASM,称为宏汇编程序。
宏汇编程序当前主要有两个版本:MASM5.0和MASM6.0。
其中,MASM5.0的可执行文件是MASM.EXE,MASM5.0用于DOS环境下。
初学者首先学习使用MASM5.0。
而MASM6.0的可执行文件是ML.EXE。
汇编过程是将源程序翻译为等价的二进制机器语言的过程。
所产生的文件称为目标程序,其后缀为.OBJ。
在这个阶段中,将对源程序的语法进行检验,如果发现错误将给予提示。
错误提示分为严重错误和警告错误两种。
严重错误指示某些指令存在语法错误,不能形成对应的二进制机器指令。
而警告错误指示某些指令含义不够明确,需要提醒程序员注意。
程序员可以根据提示对源程序进行修改,直到得到正确的结果为止。
在汇编过程中还会产生列表文件和交叉引用文件。
列表文件的后缀为.LST,主要用于给出源程序和机器代码程序的清单,以供检查程序使用。
交叉引用文件的后缀为.CRF,它是一个为源程序所引用的各种符号进行前后对照的文件,主要用于给出不同程序段中互相引用的全部符号列表。
这两个文件是可有可无的,如果不需要生成这两个文件,可以在汇编过程中加以控制。
3.链接在汇编过程中形成了目标文件(.OBJ),但是在该文件中,只是将源程序的操作码部分变成了机器码,而地址操作数还是可浮动的相对地址,不是实际地址,浮动地址需要再定位。
只有经过链接过程才能形成最后的可执行文件。
链接程序的功能就是把一个或多个目标文件合并成一个可执行文件,其后缀为.EXE。
其实在链接过程中一共形成两个文件:第一个是可执行文件(.EXE)。
6SigmaRoom教程1
6SigmaRoom 教程基础教程1:基础篇前言本文译自英文原版教程,适用的软件版本为“Release9”。
本文在英文原版的基础上,结合本人使用软件的经验进行翻译,由于本人英文水平有限,有何不当之处还望谅解。
目录前言 (2)目录 (3)基础篇1 (4)开始 (5)建立一个新的6SigmaRoom工程 (5)第一节:建筑物 (6)编辑高架地板属性 (7)第二节:设备空间 (8)布局机柜 (8)第三节:制冷 (10)添加空调 (10)第四节:分析 (12)预测温度 (12)查看机柜绘图 (12)地板格栅绘图 (13)预制视图 (13)操作模型 (14)第五节:报告 (16)打开房间概要 (16)基础篇1第一部分教程是计划非常快速的介绍一下6SigmaRoom软件。
本教程将提供最低水平的知识,你将能够建立和解析虚拟的模型然后分析结果。
不用试图记住所有的操作和模型选择,你在学习本教程过程中最重要的是如何使用和操作软件。
本教程一共分成五部分,需要花费你大约30分钟去了解:1.建立一个新的对象,并且确认软件设置正确;2.定义虚拟空间的各种物理属性;3.定义计划用于虚拟空间的设备的位置和类型;4.设定制冷参数,第三步中添加的设备制冷;5.分析虚拟空间的结果。
一旦你完成了以上五个步骤的学习,你就可以开始学习教程2了。
这样,结合一个真实数据中心的现实要素,你就可以设计一个最接近实际场景的虚拟模型。
在教程的最后,你将学会:如何建立一个基础的虚拟模型。
开始之前,请阅读文档开头的“教程文档规约”开始建立一个新的6SigmaRoom工程1.在欢迎页单击“建立新模型”;2.选择“文件>另存为”;3.输入“Tutorial1”,然后按“回车”。
第一节:建筑物画出高架地板空间1.在屏幕左下角选择“模型树”栏;2.在模型树中左键单击“Room”选中它;3.在图形界面,单击最右侧墙面的蓝色“操作块”中间那个,并按住鼠标左键;4.按住鼠标左键拖动鼠标,指导工具条显示“End X Location=4.8m”;每一点的操作块有5个,用来移动和调整,左右两个控制水平方向移动,上下两个控制垂直方向移动,中间的控制水平和垂直两个方向移动。
罗云彬的Win32汇编教程
罗云彬的Win32汇编教程之一Win32汇编的环境和基础1.32位环境简介在Dos下编汇编程序,我们可以管理系统的所有资源,我们可以改动系统中所有的内存,如自己改动内存控制块来分配内存,自己修改中断向量表来截获中断等,对其他操作也是如此,如我们对键盘端口直接操作就可以把键盘屏蔽掉,可以这样来描述Dos系统:系统只有一个特权级别,在编程上讲,任何程序和操作系统都是同级的,所以在Dos下,一个编得不好的程序会影响其他所有的程序,如一个程序把键盘口中断关掉了,所有程序就都不能从键盘获得键入的数据,直到任何一个程序重新打开键盘为止,一个程序陷入死循环,也没有其他程序可以把它终止掉。
Dos下的编程思路是“单任务”的,你只要认为你的程序会按照你的流程一步步的执行下去,不必考虑先后问题(当然程序可能会被中断打断,但你可以认为它们会把环境恢复,如果中断程序没有把环境恢复,那是他们的错)。
在内存管理方式上,Dos汇编和Win32汇编也有很多的不同:Dos工作在实模式下,我们可以寻址1M的内存,寻址时通过段寄存器来制定段的初始地址,每个段的大小为64K,超过1M的部分,就只能把他作为XMS使用,也就是说,只能用作数据存放使用而无法在其中执行程序。
而Windows在保护模式下执行,这里所有的资源对应用程序来说都是被“保护”的:程序在执行中有级别之分,只有操作系统工作在最高级--0级中,所有应用程序都工作在3级中(Ring3),在Ring3中,你无法直接访问IO端口,无法访问其他程序运行的内存,连向程序自己的代码段写入数据都是非法的,会在Windows的屏幕上冒出一个熟悉的蓝屏幕来。
只有对Ring0的程序来说,系统才是全开放的。
在内存方面,Windows使用了处理器的分页机制,使得对应用程序来说,所有的内存都是“平坦”的,你不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(可以参见80386手册方面的书籍),你可以直接指定一个32位的地址来寻址4GB的内存。
OllyDbg插件开发入门(肖梓航)
OllyDbg插件开发入门0.11版肖梓航(Claud)2010年2月E-mail:iClaudXiao@Website/Blog:依据署名—非商业性使用—相同方式共享协议3.0发布文档编号:2010-004最后更新:2010年2月19日目 录前言 (2)一、前期准备 (3)1、OllyDbg插件工作原理 (3)(1)从OllyDbg的角度 (3)(2)从插件的角度 (3)2、学习建议 (4)3、开发资源与环境 (4)4、必要的设置 (5)(1)Visual C++中的设置 (5)(2)C++程序中的设置 (5)二、常用函数 (6)1、回调函数 (6)(1)必须的回调函数 (6)(2)可选的回调函数 (8)2、插件函数 (12)(1)注册窗口类 (12)(2).ini文件交互 (13)(3)查询系统信息 (13)(4).udd文件交互 (14)3、其他函数 (14)三、实例分析 (15)1、Hello,world (15)2、Command (18)3、Bookmark (28)参考文献 (43)前言我是一个菜鸟,这是毫无疑问的。
开发OllyDbg插件,大抵不是一件难事。
因为网络上没有多少资料——只有API手册和两三篇文章而已,但依然有人开发了大量的插件。
而我却花了不少时间才初窥门径。
也正因为水平太低,我不得不努力地去理解插件是怎么工作的、去阅读每一个函数、去分析每一行示例代码、去花费N天写一个hello,world。
为了防止又把它们给忘了,还得记录下来,以便需要的时候查阅。
再后来,我想,干脆写得更傻瓜一点吧,让其他人不费脑子不费时间地也能学会。
于是就有了这个文档。
但我的水平实在太低,老实说,除了hello,world还没写出第二个插件。
所以这个文档将会随着进一步学习,不定期添加新的内容。
如果你希望看到后续版本,或者有好的建议,或者发现了错误,或者找不到文章中提到的资源,或者想骂我太菜,都可以访问下面这个页面:/2010/02/ollydbg_plugin/我会尽量保证它的长期可用性。
