汇编入门指南

    科技2025-03-04  29

    汇编入门指南

    0.前言1.环境搭建a.nasmb.VirtualBoxc.bochsd.磁盘写入器 2.介绍常见命令movjmpdivadd 常见概念寄存器偏移地址标号类型 3.推荐资源

    0.前言

    本教程按照作者亲身经历和《x86汇编语言:从实模式到保护模式》写成

    为什么要学汇编? 众所周知,汇编是比较早期的一种编程语言和低级语言,虽然比不上高级语言的可读性和效率,但这种语言作为最接近机器码的语言可以很好的帮助我们了解最底层相关机制。

    1.环境搭建

    a.nasm

    相当于汇编到二进制机器码的编译器,NASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序 在下载连接里一直下滑到最下面,点开适合的操作系统下安装

    b.VirtualBox

    调试环境,安装见地址教程在附录里有

    c.bochs

    相当于命令行调试下载地址

    d.磁盘写入器

    把编译出的.bin文件写入到disk硬盘里让系统运行,这里采用书中的配套工具,下载见文末

    2.介绍

    常见命令

    mov

    MOV指令是数据传送指令 如

    mov ax,10

    把10这个立即数赋值给ax,相当于ax=10; 或

    mov ax,bx

    把bx里16位数据赋值给ax,相当于ax=bx; 参考文章

    jmp

    JMP是汇编语言中的无条件跳转指令。无条件跳转指令可转到内存中任何程序段。转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出,相当于goto差不多,如

    infi: jmp near infi

    为无限循环,参考文章

    div

    这个是汇编中的除法指令,被除数默认放在AX或DX和AX,如果除数为8位,被除数则为16位,默认在AX中存放;如果除数 为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。 在结果中:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。 一般格式为

    mov ax,10 mov bx,5 div bx

    参考文章

    add

    add是汇编中的加法指令,大概格式为

    add a,b

    把a和b的数据相加存到a里,a为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数,b为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数b,a和b均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的, 但不允许两个都是存储器操作数。 如

    add ax,10h

    把十六进制数10h加到ax里

    常见概念

    寄存器

    汇编语言中的AX、BX、CX、DX是CPU内部的通用寄存器中的数据寄存器助记符。相当于4个16位二进制的变量,其中的高8位用AH、BH、CH、DH表示,低8位用AL、BL、CL、DL表示。参考文章

    偏移地址

    偏移地址一般和段地址一起用,应用如下

    mov ax,0xb800 mov es,ax mov byte [es:0x00],'H' mov byte [es:0x01],0x07

    其中,es是上面从ax赋值的段地址,0x00和0x01是偏移地址,这段代码在屏幕上输出H

    标号

    在上面的jmp示例代码中,"infi"为标号,相当于goto的标号,代表这里的物理内存地址

    类型

    在上面的偏移地址的示例中,byte为数据类型,为8 位无符号整数,B 代表字节 参考文章

    3.推荐资源

    蓝奏云密码:3yp4 包含以上提到的教程

    -END-
    Processed: 0.018, SQL: 8