Windows系统汇编的简单介绍
windows 10 汇编环境的搭建
1 工具准备
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站制作、成都外贸网站建设、洪洞网络推广、微信小程序定制开发、洪洞网络营销、洪洞企业策划、洪洞品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供洪洞建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
1)下载DOSBOX
工具介绍:DOSBox 是一个 DOS 模拟程序,由于它采用的是 SDL 库,所以可以很方便的移植到其他的平台。目前,DOSBox 已经支持在 Windows、Linux、Mac OS X、BeOS 、palmOS、Android 、webOS、os/2等系统中运行。不少DOS下的游戏都可以直接在该平台上运行。
2)下载MASM32
工具介绍:MASM32是国外的MASM爱好者Steve Hutchesson自行整理和编写的一个软件包,目前最高版本为11r版。MASM32并非指Microsoft的MASM宏汇编器,而是包含了不同版本工具组建的汇编开发工具包。它的汇编编译器是MASM6.0以上版本中的Ml.exe,资源编译器是Microsoft Visual Studio中的Rc.exe,32位链接器是Microsoft Visual Studio中的Link.exe,同时包含有其他的一些如Lib.exe和DumpPe.exe等工具。
注意:也可以直接下载由参考资料3作者提供的masm工具压缩包,里面包含必要的汇编、链接、调试工具(百度网盘下载)。
2 安装工具
1)安装DOSBOX
安装下载到的DOSBox0.74-win32-installer.exe,直接一路Next完成安装。
2)配置DOSBOX
创建一个用于保存汇编工具(如MASM、Link、DEBUG等工具)和汇编文件(*.asm)的目录,如:E:\DEBUG。
打开DOSBOX的安装根目录(默认安装路径:C:\Program Files\DOSBox-0.74),双击文件DOSBox 0.74 Options.bat,运行该批处理文件后系统会用文本文档Notepad打开配置文件dosbox-0.74.conf。
将光标定位到dosbox-0.74.conf文件的[autoexec]节点(一般在该文件末尾),在文件中添加以下内容:
[plain] view plain copy
MOUNT C D:\DEBUG # 将目录D:\DEBUG挂载为DOSBOX下的C:
set PATH=$PATH$;D:\DEBUG # 将D:\DEBUG写入环境变量PATH中
3)安装MASM32
可解压安装下载到的masm32v11r.zip,按默认配置安装即可。
安装结束后,可直接利用masm32v11r中的gedit.exe程序编写、编译和链接asm汇编程序。
注意,MASM32的替代方案:可直接从其他电脑上复制汇编工具DEBUG.EXE、EDIT.EXE、LINK.EXE、MASM.EXE等工具复制到E:\DEBUG文件夹下(复制时注意不能将32位系统中找到的上述工具复制到64位系统中使用)
3 样例程序
1)运行DOSBOX,在命令符C:\下输入命令:EDIT文件名.asm,启动EDIT.EXE进入代码编辑状态,并输入如下样例程序:
[plain] view plain copy
code segment
assume cs:code
start:
mov ax,5h
mov bx,6h
add ax,bx
mov ah,4ch ; 调用DOS的4C号功能
int 21h ; 退出DEBUG状态,返回DOS
code ends
end start
2)保存文件后返回DOSBOX的命令行,输入命令:MASM文件名.asm,生成目标文件文件名.OBJ(生成过程中可以修改目标文件名,直接回车可保持默认目标文件名)。
注意:此时可能生成三个文件:*.obj、*.lst和*.crf文件。其中,列表文件*.lst和交叉引用文件非必选,前者是汇编语言汇编的机器语言与汇编语言对照表,可用于调试;后者给出了用户定义的所有符号和对每个符号定义、引用的行号。
3)输入命令:LINK文件名.OBJ,链接生成可执行文件文件名.EXE。
注意:由于在上述代码中未定义堆栈段,故在链接时会提示:LINK : warning L4021: no stack segment,因不会影响执行文件的生成,故暂时忽略。
另外,此时可能生成两个文件:*.exe和*.map文件。其中,地址映射文件*.map给出内存地址分配的有关信息。
4)输入命令:DEBUG文件名.EXE,在DEBUG的命令提示符“-”出现后开始调试,以下是部分调试命令及截图:
输入命令:R,查看程序运行前的寄存器组初始值;
输入命令:U,查看程序反汇编代码。从反汇编代码中可看出,变量会被汇编为直接寻址方式,使用变量在数据段内的有效地址表示。
输入命令:T,单步调试;
输入命令:D,观察内存变化(D后不带地址或范围,默认显示上一个D命令之后的80字节内容);
输入命令:G 地址,程序从当前位置直接运行到指定地址处停下。
输入命令:E 地址修改内存中的内容,如:E DS:0100,输入空格可逐个字节修改,回车停止修改。
我用的windows 10 64位系统,我想在这个系统下练习汇编编程
用DOS的EDIT可以写源代码,然后保存,汇编,连接,即可生成汇编程序. 具体方法是: 进入DOS,输入EDIT,FILE,NEW,编辑汇编源代码,然后保存(注意扩展名为 .asm),在通过MASM或者TASM即可生成目标文件(.obj),再通过LINK即可生成可执行文件(.exe).
请问WINDOWS系统是用什么语言编写的啊?
WINDOWS系统是C++语言编写的。
WINDOWS本身属于微内核系统,WINDOWS2000则已经有20余万行代码,其中80%是用C++编写,其余部分有C和汇编,底层接口用汇编编写。微软选择C++的根本原因是WINDOWS操作系统本身是微内核系统,所以扩展性及以后的维护要求非常重要,所以C++的类的概念就能在这里很好的利用。
扩展资料:
操作系统是人使用计算机硬件沟通的平台,没有良好的人机操作性,就难以吸引广大用户使用。Windows操作系统能够作为个人计算机的主流操作系统,其优异的人机操作性是重要因素。
Windows操作系统界面友好,窗口制作优美,操作动作易学,多代系统之间有良好的传承,计算机资源管理效率较高,效果较好。
硬件的良好适应性是Windows操作系统的有一个重要特点。Windows操作系统支持多种硬件平台对于硬件生产厂商宽泛、自由的开发环境,激励了这些硬件公司选择与Windows操作系统相匹配,也激励了Windows操作系统不断完善和改进,同时,硬件技术的提升,也为操作系统功能拓展提供了支撑。
参考资料来源:百度百科-Windows操作系统
linux系统和windows系统的汇编有什么区别?
DOS/Windows 下的汇编语言代码都是 Intel 风格的。但在 Unix 和 Linux 系统中,更多采用的还是 ATT 格式,两者在语法格式上有着很大的不同:
在 ATT 汇编格式中,寄存器名要加上 '%' 作为前缀;而在 Intel 汇编格式中,寄存器名不需要加前缀。例如:
ATT 格式 pushl %eax
Intel 格式 push eax
在 ATT 汇编格式中,用 '$' 前缀表示一个立即操作数;而在 Intel 汇编格式中,立即数的表示不用带任何前缀。例如:
ATT 格式 pushl $1
Intel 格式 push 1
ATT 和 Intel 格式中的源操作数和目标操作数的位置正好相反。在 Intel 汇编格式中,目标操作数在源操作数的左边;而在 ATT 汇编格式中,目标操作数在源操作数的右边。例如:
ATT 格式 addl $1, %eax
Intel 格式 add eax, 1
在 ATT 汇编格式中,操作数的字长由操作符的最后一个字母决定,后缀'b'、'w'、'l'分别表示操作数为字节(byte,8 比特)、字(word,16 比特)和长字(long,32比特);而在 Intel 汇编格式中,操作数的字长是用 "byte ptr" 和 "word ptr" 等前缀来表示的。例如:
ATT 格式
movb val, %al
Intel 格式 mov al, byte ptr val
在 ATT 汇编格式中,绝对转移和调用指令(jump/call)的操作数前要加上'*'作为前缀,而在 Intel 格式中则不需要。
远程转移指令和远程子调用指令的操作码,在 ATT 汇编格式中为 "ljump" 和 "lcall",而在 Intel 汇编格式中则为 "jmp far" 和 "call far",即:
ATT 格式 ljump $section, $offset lcall $section, $offset
Intel 格式 jmp far section:offset call far section:offset
与之相应的远程返回指令则为:
ATT 格式 lret $stack_adjust
Intel 格式 ret far stack_adjust
在 ATT 汇编格式中,内存操作数的寻址方式是
section:disp(base, index, scale)
而在 Intel 汇编格式中,内存操作数的寻址方式为:
section:[base + index*scale + disp]
由于 Linux 工作在保护模式下,用的是 32 位线性地址,所以在计算地址时不用考虑段基址和偏移量,而是采用如下的地址计算方法:
disp + base + index * scale
下面是一些内存操作数的例子:
ATT 格式 Intel 格式
movl -4(%ebp), %eax mov eax, [ebp - 4]
movl array(, %eax, 4), %eax mov eax, [eax*4 + array]
movw array(%ebx, %eax, 4), %cx mov cx, [ebx + 4*eax + array]
movb $4, %fs:(%eax) mov fs:eax, 4
如何在win10系统下用汇编程序
用DOS的EDIT可以写源代码,然后保存,汇编,连接,即可生成汇编程序. 具体方法是: 进入DOS,输入EDIT,FILE,NEW,编辑汇编源代码,然后保存(注意扩展名为 .asm),在通过MASM或者TASM即可生成目标文件(.obj),再通过LINK即可生成可执行文件(.exe).
汇编与WINDOWS关系问题,大虾们快来帮忙啊
1.
对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。
进程是由进程控制块、程序段、数据段三部分组成。一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程。是可并发执行的程序。在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位,也是称活动、路径或任务,它有两方面性质:活动性、并发性。进程可以划分为运行、阻塞、就绪三种状态,并随一定条件而相互转化:就绪--运行,运行--阻塞,阻塞--就绪。
进程为应用程序的运行实例,是应用程序的一次动态执行。看似高深,我们可以简单地理解为:它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包括:系统管理计算机个体和完成各种操作所必需的程序;用户开启、执行的额外程序,当然也包括用户不知道,而自动运行的非法程序(它们就有可能是病毒程序)。
危害较大的可执行病毒同样以“进程”形式出现在系统内部(一些病毒可能并不被进程列表显示,如“宏病毒”),那么及时查看并准确杀掉非法进程对于手工杀毒有起着关键性的作用。
进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就是所有由你启动的进程。进程是操作系统进行资源分配的单位。
在Windows下,进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。
2.3.
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语汇编语言言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
个人总结一下:
有了进程才能封装一个应用程序 才能使应用程序有效高效地运行有了线程才能使进程更有效地使cpu调度.
汇编是一种语言.上述所说的直接操作感觉有点牵强 任何硬件都只认机器语言就是我们说的二进制.当然他的意思是让汇编直接作为某些操作系统对上级用户屏蔽下级硬件运作的程序 例如中断程序 多线程调度(可能是汇编+c) bios(bootloader)..
汇编语言编译后生成二进制的目标文件就是我们常说的obj 里面就是一个存放此程序的相对以言的地址 通过链接 就能构建成可执行文件了.
可以看看操作系统 微机原理
名称栏目:Windows系统汇编的简单介绍
网站链接:http://hbruida.cn/article/hhsihg.html