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

    浏览量

    16093
  • 编译
    +关注

    关注

    0

    文章

    615

    浏览量

    32397
  • 汇编代码
    +关注

    关注

    0

    文章

    23

    浏览量

    7512
收藏 人收藏

    评论

    相关推荐

    求帮忙写个汇编程序

    求大神帮忙写汇编程序,用汇编程序实现“行走的小人”这一程序的源代码???
    发表于 09-26 22:49

    在Keil下完成汇编程序的编写

    文章目录要求、在Keil下完成汇编程序的编写1、新建工程2、配置环境3、编译测试(1)测试代码(2)仿真器设置(3)编译调试4、hex文件分析要求在Keil下完成
    发表于 08-11 08:04

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

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

    ARM汇编程序设计

    嵌入式系统.第五章.ARM汇编程序设计.ARM汇编程序设计20 目录5 ARM汇编程序设计5.2 ARM汇编程序设计25.2.1课堂重点5.2.2测试与作业6 下
    发表于 12-14 07:03

    ARM汇编程序设计

    慕课电子科技大学.嵌入式系统.第五章.ARM汇编程序设计.ARM汇编程序格式0 目录5 ARM汇编程序设计5.1 ARM汇编程序格式5.1.1课堂重点5.1.2测试与作业6 下
    发表于 12-20 06:31

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

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

    汇编程序编写

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

    EMC系列单片机反汇编程序

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

    汇编程序100例

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

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

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

    MSP430 C和汇编程序

    MSP430 C和汇编程序,有需要的朋友下来看看。
    发表于 05-25 10:26 22次下载

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

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

    51单片机汇编程序有哪些?51单片机汇编程序集详细资料免费下载

    本文档的主要内容详细介绍的是51单片机汇编程序有哪些?51单片机汇编程序集详细资料免费下载。
    发表于 09-06 16:31 55次下载
    51单片机<b class='flag-5'>汇编程序</b>有哪些?51单片机<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>课件免费下载

    51单片机汇编程序,温度报警项目

    51单片机汇编程序,温度报警项目
    发表于 11-21 12:36 17次下载
    51单片机<b class='flag-5'>汇编程序</b>,温度报警项目