zoukankan      html  css  js  c++  java
  • Not Hello World

    通常对于一门语言的学习,一般都是以“Hello,World!”开始的。但对于汇编语言的学习,输出这句话并不容易,首先得了解寄存器等硬件知识。

    汇编语言要得以运行,首先要讲源文件编译链接成可执行文件,才能运行。这里需要编译器和连接器(资源我分享到了百度云:链接:https://pan.baidu.com/s/1dE4mb3F,密码:ywfp)。因为我用的是32位Win7,因此我可以不用DosBox。

    一、第一个源文件

    代码如下

    assume cs:codeseg
    codeseg segment
    	mov ax,2
    	add ax,ax
    	add ax,ax
    	
    	mov ax,4c00H
    	int 21H
    codeseg ends
    end

    从这个汇编语言程序是用来计算23的。

    首先看到assume(伪)指令,英文意思是“假设”之意,后面紧跟cs:codeseg,这里其实是定义了一个代码段名,对于一个程序必须得有一个段而且是代码段,对于数据段和栈段可以不必有,若缺少代码段,数据段和栈又怎能构成一个程序呢。codeseg称为标号,指代一个地址,这个段的名称最终会被编译链接称为一个地址。对于codeseg segment……codeseg ends这一对伪指令定义了一个段,segment表示段开始,ends表示段结束。end伪指令意味着程序的真正结束,每个程序必须有,否则将无法知道程序什么时候结束。

    段内部分是真正的汇编指令,最后面两句mov ax,4c00H和int 21H是程序返回,这是固定的。DOS系统是一个单任务操作系统,对于两个程序P1,P2(假设P1正在执行),如果要执行P2,必须由P1将P2加载到内存,将CPU授权给P2,P2才可执行,此时P1将挂起。当P2结束后,应将CPU还给P1,让P1继续执行,若只有一条指令,则交给系统,int指令不是c或其他语言中的整形类型,而是中断指令。因此这两句必不可少。

    二、程序编辑、编译、连接&运行

    (1)编辑

    对于编辑器有很多,什么notepad,notepad++,UltraEdit什么的都可以,喜欢用哪个就用哪个。保存为“文件名.asm”的形式。

    (2)编译

    新建立一个文件夹,我的在F:masm中,将masm6.15中的debug.exe,masm.exe,link.exe和ml.exe拷贝进去就行。在DosBox下masm6.15自己的不知道为什么不能用,只能用masm5,。当然将源程序也放进去。

    编译:使用masm 文件名.asm


    编译成功,将会生成一个obj文件,用ue打开之后是一些16进制数,不懂。


    (3)连接

    连接:使用link 文件名.obj即可,连接后将生成exe文件。


    编译时Run File什么的直接回车略过就行,因为这个文件没用什么库啥的,暂且不用管。


    连接的作用主要是:

    • 当源程序较大时,将源程序分为多个文件来编译,编译完成后再将其一一连接,便于源程序管理。
    • 需要用到其他的库文件时
    • 对于生成的obj文件还不能直接执行,需连接程序将其处理为可直接运行的文件
    以上两步也可用ml.exe直接进行编译连接。

    (4)运行

    直接输入exe文件名运行就可以了,但通常是一闪而过,因为机器足够快。




  • 相关阅读:
    vue中的具名插槽
    vue中默认插槽slot
    局部组件使用指令-方法-过滤器-计算属性
    vue创建局部组件
    Class Metaprogramming
    Attribute Descriptors
    Dynamic Attributes and Properties
    Concurrency with asyncio
    Concurrency with Futures
    Coroutines
  • 原文地址:https://www.cnblogs.com/pipinet/p/6257372.html
Copyright © 2011-2022 走看看