精华内容
下载资源
问答
  • MARS(MIPS汇编程序和运行时模拟器)

    万次阅读 多人点赞 2018-09-28 22:01:34
    MARS(MIPS汇编程序和运行时模拟器) An IDE for MIPS Assembly Language Programming 简介   官网上的说明:MARS is a lightweight interactive development environment (IDE) for programming in MIPS ...

    MARS(MIPS汇编程序和运行时模拟器)

    An IDE for MIPS Assembly Language Programming

    简介

      官网上的说明:MARS is a lightweight interactive development environment (IDE) for programming in MIPS assembly language, intended for educational-level use with Patterson and Hennessy’s Computer Organization and Design.(MARS是一个轻量级的交互式开发环境(IDE),用于使用MIPS汇编语言进行编程,旨在与Patterson和Hennessy的计算机组织和设计一起用于教育级别。)
      目前最新版本为MARS 4_5
      是一个4MB左右的.Jar可执行文件,需要使用Java环境,如果有Java运行环境(JRE)可直接使用,否则应先下载JRE或JDK
      这里提供了不需要积分就可下载的JDK8和9的安装文件,都是64位windows安装程序,大家根据需要选择或自行去官网下载合适的版本:
      jdk-8u281-windows-x64.zip
      jdk-9.0.4_windows-x64_bin.zip

    下载

    1. 百度搜索MARS MIPS simulator或者直接输入 http://courses.missouristate.edu/kenvollmar/mars/ 访问官网
    2. 点击下载最新版
        为了便于网速比较慢的小伙伴下载,这里上传了MARS的资源,不需要C币就可以下载:Mars4_5.zip
      下载MARS
        这里下载下面的黄色提示需要注意一下,翻译是:“注意:您的MARS文字小得难以理解吗? 下载并使用新版本的Java 9,该Java 9包含一个修复程序,可以自动缩放和调整AWT和Swing组件的大小,以在Windows和Linux上显示每英寸高点(HiDPI)”。所以,如果大家觉得字体特别小的话,可以使用9及以上的JDK版本。

    创建开始菜单快捷方式

      因为MARS是.jar文件,所以不能直接固定到“开始”屏幕,需要进行一些处理:

    1. 创建Mars4_5.jar的快捷方式
      创建Mars4_5.jar的快捷方式
    2. 将快捷方式移动到开始菜单目录
      C:\Users\ XXX(实际的账户名称) \AppData\Roaming\Microsoft\Windows\Start Menu
      将快捷方式移动到开始菜单目录
    3. 在开始菜单搜索Mars,并右键选择 固定到“开始”屏幕
      在开始菜单搜索Mars,并右键选择 固定到“开始”屏幕

    使用入门

    Mars功能强大,具有代码提示,模拟运行,调试,统计等功能

    1. 界面简介
      界面简介
    2. 运行方法
      运行方法

    示例1

    #include <stdio.h>
    int main(void)
    {
        int r, x;
        x = 2;
        r = x + 3;
        printf("%d", r);
        return 0;
    }
    

    我们将上面的C语言代码转成mips汇编指令

    1. x = 2;
      #将t1寄存器的值置为2
      li $t1, 2
      
    2. r = x + 3;
      #将 t1寄存器中的数据加3,存到t0中 (t0 = t1 + 3)
      add $t0, $t1, 3
      
    3. printf("%d", r);
      $v0 = 1, syscall -> print_int
      $v0 = 4, syscall -> print_string,
      #将t0寄存器的值放到a0寄存器中
      move $a0, $t0
      #将v0寄存器的值置为1
      li $v0, 1
      #系统调用
      syscall 
      

    完整转换的mips指令

    #将t1寄存器的值置为2
    li $t1, 2
    #将 t1寄存器中的数据加3,存到t0中 (t0 = t1 + 3)
    add $t0, $t1, 3
    #将t0寄存器的值放到a0寄存器中
    move $a0, $t0
    #将v0寄存器的值置为1
    li $v0, 1
    #系统调用
    syscall 
    

    运行示例1:
    在这里插入图片描述




    可能遇到的问题

    1、Windows询问如何打开这个文件
    如何打开
      这种情况一般是没有安装Java环境,下载安装JDK或JRE即可,当然,也有可能是下载的免安装版的JDK,这时就需要配置下环境变量了。

    2、有Java环境却无法打开MARS,或双击无反应
      建议在mars所在的目录使用命令:java -jar Mars4_5.jarjavaw -jar Mars4_5.jar
    命令


    (感谢评论区小伙伴提供的一个问题及解决方式)
    3、安装了java之后双击Mars,系统提示以何种方式打开文件,在属性里把打开方式换为java会刚打开就闪退
      在classpath里添加D:/Mars4_5.jar(这里的路径需要大家根据自己的实际路径来设置),然后在命令行里用java -classpath %classpath% Mars,就可以打开了,但这种情况下不能关闭命令提示符,要不然mars也会退出。

    环境变量配置:
    添加classpath

    运行示例:
    运行示例
      这里想到Windows下应该有类似于在Linux经常用到的nohup及&,经过查找,可以在命令前加上start /b来是实现Linux上的在命令结尾加&的效果,但是并没有找到类似nohup的命令。这就导致虽然运行转入了后台,但是关闭命令窗口依然会结束Mars的运行。
    后台运行
      所以目前比较好的解决方案是使用VBS脚本:
      ①新建一个文本文档,命名为Mars.txt(可以随意,只要能在用到的时候知道这个脚本是运行Mars的即可)
    mars.txt

      ②双击打开此文本文档,复制如下代码,并保存。

    Set Ws = CreateObject("Wscript.Shell")
    Ws.Run("java -classpath %classpath% Mars"),0
    

    复制保存

      ③将此文本文档的.txt后缀名更改为.vbs
    Mars.vbs

      至此,双击这个Mars.vbs即可运行Mars啦,而且不会有多余的命令窗口存在。
    运行效果

    展开全文
  • 汇编语言程序vs. 汇编程序

    千次阅读 2016-12-02 13:37:48
    汇编程序@(组成原理)这是个常常被人拿来挖坑的地方。汇编语言程序就是你用汇编语言写的文本型的程序,我们说用一堆助记符来写的源代码。汇编程序是汇编阶段用来把汇编语言翻译成机器语言指令的程序。二者是不同的...

    汇编语言程序vs. 汇编程序

    @(组成原理)

    这是个常常被人拿来挖坑的地方。

    汇编语言程序就是你用汇编语言写的文本型的程序,我们说用一堆助记符来写的源代码。汇编程序是汇编阶段用来把汇编语言翻译成机器语言指令的程序。二者是不同的概念。

    比如有些时候问,计算机能够直接执行的是:

    A. 机器语言程序
    B. 汇编语言程序
    C. 硬件描述语言程序

    汇编语言程序需要经过汇编以后得到机器目标语言,是二进制程序,才能被硬件执行。

    硬件描述语言如HDL等,是为了抽象的描述硬件信息,作为硬件设计中自顶向下的思考工具而存在,是仿真用的。能被机器直接执行的,能自顶向下?

    汇编阶段:如汇编器将hello.s翻译成机器语言指令。把这些指令打包成可重定位目标程序,即文件。hello.o是一个二进制文件,它的字节码是机器语言指令,不再是字符。前面两个阶段:预处理,编译都还有字符。

    展开全文
  • 经典汇编程序100例

    热门讨论 2011-09-21 18:19:36
    包含了一系列的经典汇编程序,非常适合一些初学者模仿,从而提升自己的汇编程序的编写能力。
  • ARM汇编程序开发入门

    千人学习 2016-01-19 16:54:41
    本课程主要讲解ARM处理器的arm指令,thumb指令,ADS伪指令,汇编程序设计。
  • Windows上编写汇编程序

    千次阅读 2018-12-12 23:37:08
    编写汇编程序 汇编语言工具包:链接:https://pan.baidu.com/s/1biXtlVcb1HW9WoiliD6SbQ 密码:86zz 一下介绍的是使用MASM在Windows和Mac上翻译和链接汇编程序,还有一款emu8086的软件也挺好用。 1. 在32位机上(学校...

    编写汇编程序

    汇编语言工具包:链接:https://pan.baidu.com/s/1biXtlVcb1HW9WoiliD6SbQ 密码:86zz

    一下介绍的是使用MASM在Windows和Mac上翻译和链接汇编程序,还有一款emu8086的软件也挺好用。

    1. 在32位机上(学校的机子上,win7_x86)

    1. 将工具包中MASM文件夹复制到C盘下

      1

    2. 打开cmd,来到这个目录下

      2

    3. 创建一个1.asm文件,使用edit工具进行编辑(edit就是个编辑器,还是notepad好用)

      3

    4. 使用edit编辑代码,并保存

      4

    5. masm 1;进行汇编,会生成一个1.obj文件

      5

    6. link 1;链接文件

      6

    7. 1.exe或者1;运行程序

      7.1

      7.2

    2. 在64位Windows机器上

    要使用一个叫DOSBox的工具来模拟32位环境。

    1. 安装DOSBox一路next

    2. 运行DOSbox

    3. 绑定MASM的路径

      mount C C:\MASM

      3

    4. 切换到挂在的C盘

      4

    5. 然后就可以和上面一样咯

      5.1

      5.2

      5.3

    3. Mac上写汇编程序

    DOSBox也有Mac版本的。

    MAC上编写汇编程序


    完,不足之处还请指正。

    展开全文
  • 汇编程序

    千次阅读 2011-05-29 12:21:00
    汇编程序-MASM 汇编( Assemble )就是把用汇编语言编写的源程序翻译(汇编)成机器语言的目标程序。其基本工具是汇编程序。可使用小汇编程序( ASM ), 也可以使用微软公司产品宏汇编程序(MASM )。实验...

    宏汇编程序-MASM 汇编( Assemble )就是把用汇编语言编写的源程序翻译(汇编)成机器语言的目标程序。其基本工具是汇编程序。可使用小汇编程序( ASM ), 也可以使用微软公司产品宏汇编程序(MASM )。实验推荐使用宏汇编程序,因为它不但可以代替 ASM ,而且可以汇编具有宏定义的汇编程序。

      宏意思是源程序中的一段有独立功能的程序代码

      宏指令,用户自定义的指令。编程序时候,将多次使用的功能用一条宏指令来代替。

      汇编包括指令 ,伪指令,宏指令。前两个都是规定的,最后一个是你自己设计的。

      好处是用起来方便,::))定义就是为了使用,但是要先定义,后调用。

      (这一点和子程序可是不一样啊)

      例如,宏定义,两个字相乘

      multiply MACRO opr1, opr2, result

      push dx

      push ax

      mov ax,opr1

      imul opr2

      mov result, ax

      pop ax

      pop dx

      ENDM

      调用这个宏,

      multiply cx, var, xyz[bx]

      宏展开

      1 push dx

      1 push ax

      1 mov ax, cx

      1 imul var (var不能使立即数)

      1 mov xyz[bx], ax

      1 pop ax

      1 pop dx

      (就是带进去,看明白了吧,注意一点,必须保证展看后有效)

      例如,求绝对值

      宏定义,

      absol MACRO oper

      LOCAL next

      cmp oper, 0 (和0比较)

      jge next

      neg oper (求补,就是求绝对值了)

      next: (防止多次存入一个地址)

      ENDM

      宏调用,

      .........

      absol var

      .......

      absol bx

      宏展开,

      1 cmp var,0

      1 jge ??0000

      1 neg var

      1 ??0000:

      ..........

      1 cmp bx, 0

      1 jge ??0001

      1 neg bx

      1??0001:

      (很清楚把,就像是你做好了一个公式,然后带入就是了,

      汇编学到这里才觉得有趣:))

      &使用

      例如宏定义,

      leap macro cond, lab

      j&cond lab

      endm

      宏调用

      leap z, there

      .........

      leap nz, here

      宏展开,

      1 jz there

      .........

      1 jnz here

      (明白了吧,就是and,合起来的意思,没有什么好讲的,)

      在举一个例子

      msg macro lab, num, xyz

      lab&num db 'WELCOEME YOU STUDY WITH JINZHOU MR,&xyz'

      endm

      宏调用

      msg ary, 1, wang (这个地方不用注释吧,就是调用两次:)

      ......

      msg ary, 2, zhang

      宏展开

      1 ary1 db 'WELCOEME YOU STUDY WITH JINZHOU MR wang'

      .......

      1 ary2 db 'WELCOEME YOU STUDY WITH JINZHOU MR zhang'

      (特别简单吧,很好玩吧,)

      %用法

      例如,

      宏定义,

      msg macro count, string

      msg&count db string

      endm

      errmsg macro text

      cntr = cntr + 1

      msg %cntr, text

      endm

      宏调用

      entr=0

      ....

      errmsg 'SYNTAX ERROR'

      .......

      errmsg 'INVALID OPERAND'

      宏展开

      1 cntr = cntr + 1

      1 msg %cntr, 'SYNTAX ERROR'

      2 msg1 db 'SYNTAX ERROR'

      ...........

      1 cntr = cntr + 1

      1 msg %cntr, 'INVALID OPERAND'

      2 msg1 db 'INVALID OPERAND'

      (看出来了吧,就是代替,一般只能看到2所显示的,为了清楚理解,

      把1也写出来了)

      宏库的建立与调用,(一般以mac后缀)

      建立宏库,很简单,遍上号码,变成一个程序就是了

      入 MACRO.MAC macro1 MACRO

      ........

      ENDM

      ..... macro2 MACRO

      .........

      ENDM

      .......

      (想用多少用多少)

      调用,

      方式include加上 路径

      不举例子了,很简单。

      简单说一下宏调用和子程序的区别:

      子程序在程序执行期间调用,只占用自身大小的一段空间。

      (必须到子程序的IP,好处是节省内存,效率高,

      但是因为要保存返回地址,转向地址,时间长,适合长代码,

      频繁调用的)

      宏调用,在汇编期间被展开,调用一次展开一次。

      注:可能有失误之处,请大家指出,另外这是学习的记录

     

    展开全文
  • 通过汇编程序理解汇编和链接过程

    千次阅读 2020-09-17 18:20:17
    通过编写汇编程序,然后分析它的汇编和链接过程,对理解汇编程序中的各种汇编器指令和各种标签很有帮助。 首先介绍以下汇编器指令和标签这两个概念,观察下面一段求最大值的汇编程序代码maxmum.s: #目的:寻找一组...
  • 基于Keil 5编写汇编程序

    千次阅读 2020-12-28 21:33:08
    本文目的是通过keil 5 编写汇编程序来熟悉汇编语言的相关知识。这里分为两个部分:第一个部分在Keil上练习汇编的编写和调试,同时了解一下Hex文件的格式;第二个部分是使用汇编进行stm32F103的点灯实验,用实战的...
  • (初学者)使用DOSBox编写汇编程序

    万次阅读 多人点赞 2019-04-02 23:25:25
    目录一、安装DOSBox二、环境配置三、编写汇编程序 一、安装DOSBox 官方链接:https://www.dosbox.com/download.php?main=1 在其中选择适合自己系统的版本即可,安装过程一路点next。 二、环境配置 1.新建一个文件夹...
  • 【ARM】在Uboot中运行第一个汇编程序

    千次阅读 2020-08-04 11:04:36
    汇编程序02. 编译03. 下载执行04. 文件对比05. 程序示例二06. 附录 01. 汇编程序 汇编程序 .section .rodata .align 2 .LC0: .string "hello arm\n" .section .text .align 2 .global _start _start: ...
  • c语言中如何调用汇编程序

    千次阅读 2017-08-28 17:21:14
    c语言中如何调用汇编程序
  • 汇编程序与编译程序区别 assembler compiler
  • 汇编程序实现电子时钟

    千次阅读 2019-11-22 17:31:11
    汇编程序实现电子时钟 需要的子程序: 1.显示子程序disp 2.显示延时子程序dey1 3.中断服务intt0 4.中断服务退出子程序out 5.加一子程序add1 6.清空子程序clr0 ...
  • 汇编程序debug的使用完整使用

    千次阅读 2019-09-09 10:41:42
    关于汇编程序debug的使用完整使用教程-干货满满debug的命令符具体使用流程 ###前言 在网上搜索了10min,大多数关于汇编程序debug功能的使用的文章,发现大多数都是一样的,只是简单的介绍了debug的一些命令符之类的...
  • 汇编程序返回dos

    千次阅读 2018-06-01 14:25:00
    汇编程序返回dos有两种方式: 1. push ds  sub ax,ax  push ax  ...  ret 作用:一开始ds是指向psp的,在psp:0000处放着int20h(即终止程序的指令),然后用ret,会把psp指向给cs,0给ip,运...
  • 8086汇编程序问题

    千次阅读 2018-05-01 00:58:26
    8086汇编程序问题 程序要求:从键盘输入一串字符串,将所有小写字母转为大写并输出 输入字符串 课上代码: DATA SEGMENT BUFFER DB 16,?,16 DUP ('$'),'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:...
  • 用VS2008编写汇编程序

    千次阅读 2017-04-23 22:07:49
    查目录,汇编程序ml.exe和连接程序link都在VC的bin中,这也就不见怪了。  具体的步骤是:  1、新建简单的VC控制台应用程序  A、打开Microsoft Visual Studio 2008,选择主菜单“File”  B、选择子菜单“New...
  • C语言对应的汇编程序

    千次阅读 2018-01-27 22:56:47
    得到汇编程序 把得到的汇编程序中的以点号开头的都是用于链接时候的辅助信息去掉 得到下面干净的汇编程序  (1)esp:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最...
  • ARM汇编程序——加法

    千次阅读 2018-05-31 15:41:02
    问题:编写一个汇编程序,实现计算1+2+3+……+10,并将计算结果保留在R4寄存器中。程序代码 area add,code,readonly entry start mov r0,#0 mov r1,#1 loop add r0,r0,r1 add r1,r1,#1 cmp r1,#11 bne loop ...
  • 根据c语言程序转换成汇编程序

    千次阅读 2016-03-04 14:23:26
    gcc编译器可以将c语言程序转换为对应的汇编程序,只要在编译时候添加-S选项即可: gcc -S main.c 这时候会默认生成main.s汇编程序文件。
  • 汇编程序的编译与连接

    千次阅读 2018-01-12 21:37:06
    title:汇编程序的编译与连接 date: tags: categories: IT description: 汇编程序的编译与连接 本文摘自《汇编语言》,作者王爽 汇编程序写好后,使用汇编语言编译程序对源程序文件中的源程序进行编译,...
  • 源程序、目标程序、汇编程序、编译程序、解释程序之间的关系 翻译程序是这样一种程序:它能把用甲种语言编写的程序翻译成在功能上与之等价的用乙种语言编写的程序。我们把甲种语言称为源语言,把乙种语言称为目标...
  • 在keil环境中,在一个汇编程序中调用另一个xx.ASM文件里面的程序该怎么调用?![图片](https://img-ask.csdn.net/upload/201709/06/1504710564_196103.png)![图片]...
  • 汇编程序中bne及beq的区别

    万次阅读 多人点赞 2018-07-10 22:51:20
    汇编程序中我们会使用cmp指令进行判断,类似于流程框图中的选择判断框(菱形框),其后面可以跟bne和beq两种指令,具体看下边例子:(1)例一:cmp同bne搭配cmp r1,r2 //这个cmp搭配下边的bne指令构成了如果r1≠r2...
  • 汇编程序】dosbox+masm汇编程序安装

    千次阅读 2018-12-04 21:59:24
    1. 下载dosbox安装程序:DOSBox0.74-win32-installer.exe 链接:https://pan.baidu.com/s/1gXPKTT-xKb6BpjOJdhmudA 密码:khqs 2. 安装。注意它是32位的。我装在了C盘program files(X86)。 3. 下载masm文件。 ...
  • 汇编程序开发环境搭配

    千次阅读 2016-11-23 10:27:12
     引子 由于这些日子一直都在研究底层的技术,从 Windows 驱动程序,到 Windows 内核等等技术的学习, ...而由于近来在公司里一直都有项目压着,所以在公司里也实在不好拿本汇编程序设计看, 所以只好晚上回来
  • 在Linux下运行你的第一个汇编程序

    万次阅读 2020-02-21 12:40:34
    在Linux下运行你的第一个汇编程序 汇编语言对于大多数程序员来说都是进而远之的,原因当然是汇编语言晦涩难懂,各种指令搞得人头疼,不过汇编语言适当了解一些还是蛮有意思的,今天带大家在Linux上运行第一个汇编...
  • 汇编程序中调用C函数

    万次阅读 2018-03-10 21:30:57
    汇编程序调用C函数时,函数的入口参数使用栈来传送,参数的传递顺序是从右到左。即函数最后(最右边的)一个参数先入栈,而最左边的第一个参数最后入栈,然后执行 CALL 指令去调用C函数。 二、参数的清除 在C函数...
  • 51单片机一位数码管汇编程序

    万次阅读 多人点赞 2015-07-29 15:50:11
    51单片机一位数码管汇编程序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 327,008
精华内容 130,803
关键字:

汇编程序