0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

汇编学习入门之第一个汇编程序

jf_78858299 来源:硬件底裤 作者:酸奶盖子 2023-02-14 15:10 次阅读

经过理论铺垫,现在正式进入语言实际操作和效果展示,该篇文章主要是介绍常用命令与命令的惯常用法;编写、编译一般的汇编程序;阅读机器码。

  • 注意:本文汇编程序是X86环境下的,移植其他平台可能产生错误。*

一、常用的命令

汇编代码主要由助记符和操作数组成,格式通常如下

例:

MOV AX,0x10

上述例子只是一个简单的举例,事实上,mov指令还有能在多种用法,如下图所示。

图片

将上述上图抽象出来便有以下关系:

MOV 目的,源

既:

MOV reg/mem,reg/mem/Imm

其中:

reg 寄存器

mem 内存

imm立即数

又可以在名称后面跟数字表示位数,如imm32 就是可以操作32位数据。

必须明确,源操作数位数必须与目的操作数位数相同。

注:学习更多指令语法参考文末百度云书籍。

对机器而言这种编码组织形式是高效的,作为人类这种高效无疑增加了复杂性。

现代不是计算机刚问世的时期,现代工程师要追求最优解。

经过工程师迭代,在汇编语言基础上开发出来的编译器普遍具有伪指令、标号等功能以便源文件具有较高可读性。

例:

Start:;标号声明该段代码代号,标号不会参与编译过程

MOV AX,0x10       ;0x10复制给AX寄存器

   MOV CX,0x00       ;0x00复制给CX寄存器

  ADD AX,CX           ;AX寄存器值加上CX寄存器值

将上述程序存放起来,命名为10_01.asm,.asm为汇编源文件,使用NASM编译。

编译命令:nasm -f bin .\\10_01.asm -o .\\10_01.bin

其中:

nasm 执行程序

10_01.asm 源文件

-f bin 指定输出文件格式为.bin

注:更多指令语法参考文末百度云书籍。

编译后将.bin文件打开得到如下图数据:

图片

为研究方便,再对输出文件进行反汇编。

将.bin文件在0x7c00处反编译

使用命令:ndisasm -o 0x7c00 .\\10_01.bin >> .\\10_01-1.asm

得到:

00007C00B81000 mov ax,0x10

00007C03B90000 mov cx,0x0

00007C06 01C8 add ax,cx

现在所有东西都一目了然,在.bin文件中:

B8为mov AX指令所对应的机器码,因为AX宽16位,而0x10为8位所以补两个0凑够16位,X86立即数先低位后高位存放0010在内存中便是1000;B9同理。

01为add指令机器码,C8代表AX,CX两个寄存器值相加。

  • 二、Helloworld

现在了解了简单的汇编语言,我们必须要查看一下效果。

为此,helloworld虽迟但到!

1、建立helloworld.asm

图片

2、输入以下指令

org 07c00h ;程序起始位07c00h

mov ax,cs

    mov ds,ax

    mov es,ax

    call DispStr    

    jmp $     ;死循环

DispStr:;字符串调用函数

mov ax,BootMessage

    mov bp,ax               ;串地址

    mov cx,11               ;串长度

    mov ax,01301h      ;AH = 13,AL = 01h

    mov bx,000ah  ;黑底绿字

    mov dl,0

    int 10h      ;10h号中断

    ret

    BootMessage:db "Helloworld!"

    times 510 - ($-$$)db  0

;生成一串512字节二进制代码

dw 0xaa55  ;结束标志

3、编译

nasm -f bin .\\helloworld.asm -o .\\helloworld.bin

4、效果

图片

上述源码看客们可以先行阅读,下一篇推文对源码进行解析。

参考文献:

[1]Nasm.[EB/OL]. http://www.bytekits.com/nasm/intro.html.

[2] 蹦蹦骑士.[EB/OL].https://www.cnblogs.com/alwaysking/p/7623781.html#:~:text=%E7%BC%96%E

[3] 万一.[EB/OL]. https://www.cnblogs.com/del/archive/2010/03/16/1687665.html.-.

[4]INTEl.[EB/OL]. https://css.csail.mit.edu/6.858/2015/readings/i386.pdf.-.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 汇编程序
    +关注

    关注

    0

    文章

    56

    浏览量

    16164
  • 编译
    +关注

    关注

    0

    文章

    657

    浏览量

    32873
  • 汇编代码
    +关注

    关注

    0

    文章

    23

    浏览量

    7551
收藏 人收藏

    评论

    相关推荐

    汇编程序和反汇编程序简要设计

    汇编程序和反汇编程序,可以由机器语言得到汇编语言 不是所有都会默认从0000H开始,保险起见,还是要在开头用ORG 0000H,然后加条跳转指令到
    发表于 12-01 06:34

    51 系列汇编程序设计的优化1

    51 系列汇编程序设计的优化1
    发表于 05-15 14:55 24次下载

    汇编程序编写

     汇编程序编写 汇编程序举例􀂊GISR5: ;优先级INT5中断人口􀂊CLRC INTM ;开总中断(因为进中断就自动关闭总中断)&
    发表于 03-30 15:55 31次下载

    PCF8563汇编程序

    刚写的PCF8563汇编程序,请教高手!!!;***************************************************************;PCF8563时钟
    发表于 08-19 17:41 90次下载

    EMC系列单片机反汇编程序

    本文提供的EMC系列单片机反汇编程序,希望对你学习有所帮助!
    发表于 06-03 15:32 34次下载

    汇编程序100例

    汇编程序100例,方便初学者快速的入门,加快掌握汇编语言。
    发表于 11-17 15:22 96次下载

    AD和DA转换的c程序和对应的汇编程序

    有关AD和DA转换的c程序和对应的汇编程序
    发表于 11-19 16:43 27次下载

    51单片机汇编程序

    51单片机汇编程序包。
    发表于 01-06 14:12 16次下载

    DSP汇编程序优化方法的探讨

    DSP汇编程序优化方法的探讨
    发表于 10-20 10:41 5次下载
    DSP<b class='flag-5'>汇编程序</b>优化方法的探讨

    lcd1602汇编程序,LCD1602汇编显示程序代码

    汇编语言书写的程序翻译成与等价的机器语言程序的翻译程序汇编程序输入的是用
    发表于 10-20 15:34 1.5w次阅读
    lcd1602<b class='flag-5'>汇编程序</b>,LCD1602<b class='flag-5'>汇编</b>显示<b class='flag-5'>程序</b>代码

    单片机入门汇编程序太阳跟随系统的程序资料免费下载

    本文档的主要内容详细介绍的是单片机入门汇编程序太阳跟随系统的程序资料免费下载。
    发表于 02-20 17:58 7次下载
    单片机<b class='flag-5'>入门</b><b class='flag-5'>汇编程序</b><b class='flag-5'>之</b>太阳跟随系统的<b class='flag-5'>程序</b>资料免费下载

    汇编程序设计的教程课件免费下载

    本文档的主要内容详细介绍的是汇编程序设计的教程课件免费下载包括了:汇编语言与汇编器,汇编语言程序规范,伪指令及应用,宏指令及应用,
    发表于 03-16 17:08 17次下载
    <b class='flag-5'>汇编程序</b>设计的教程课件免费下载

    微机的汇编语言及汇编程序设计学习课件免费下载

    本文档的主要内容详细介绍的是微机的汇编语言及汇编程序设计学习课件免费下载包括了:1 概述,2 伪指令,3 表达式及运算符,4 宏指令,5 汇编语言
    发表于 11-02 08:00 6次下载
    微机的<b class='flag-5'>汇编</b>语言及<b class='flag-5'>汇编程序</b>设计<b class='flag-5'>学习</b>课件免费下载

    单片机入门汇编程序--直流电机的控制

    单片机入门汇编程序--直流电机的控制(安徽理士电源威廉希尔官方网站 有限公司招聘)-该文档为单片机入门汇编程序--直流电机的控制总结文档,是份不错的参考
    发表于 09-22 14:33 11次下载
    单片机<b class='flag-5'>入门</b><b class='flag-5'>汇编程序</b>--直流电机的控制

    单片机入门汇编程序--直流电机的单片机控制

    单片机入门汇编程序--直流电机的单片机控制(15kvaups电源威廉希尔官方网站 协议)-该文档为单片机入门汇编程序--直流电机的单片机控制总结文档,是
    发表于 09-22 14:37 38次下载
    单片机<b class='flag-5'>入门</b><b class='flag-5'>汇编程序</b>--直流电机的单片机控制