当前位置:首页 > 开发工具 > 汇编语言学习记录01丨开发工具安装及编译运行第一个程序

汇编语言学习记录01丨开发工具安装及编译运行第一个程序

2022年11月09日 17:24:26开发工具10

汇编语言开发工具安装

首先安装VS Code(建议下载最新版,否则有可能会与的下面拓展版本不兼容)

安装完成VS Code后,点击拓展——搜索MASM/TASM拓展——安装。

由于课程需要,我会选择MASM作为汇编工具,选择DOSBox作为16位模拟器,这些都可以在VSCode的拓展设置中进行设置,如下图:

简单几步即可开始敲汇编代码了😄

该拓展的Github地址戳这

第一个汇编程序

汇编程序从写出到执行的过程如下图,而VSCode+MASM/TASM拓展即直接将“编译-连接-加载”整合为一键执行了。

实验课代码如下:(注意,文件命名后缀为.asm

assume cs:codesg, ds:datasg

datasg segment ;定义数据段
        a db 2 ;define byte, 一个字节(8位)
        b dw 2 ;define word, 一个字(16位)
        a1 dd 2;一个双字(32位)
        d equ 2
        num1 db 3
        num2 db 5
        num3 db ?
datasg ends

codesg segment ;定义名称为codesg的代码段
start:
        mov ax, datasg; datasg是一个地址
        mov ds, ax ;CPU将定义的数据段中的内容当作数据做访问
        
        ;加法运算如下:
        mov al, num1
        add al, num2
        mov num3, al
        
        mov ax, 4c00h ;程序返回语句之一
        int 21h       ;程序返回语句之一
codesg ends    ;名称为codesg的代码段到此结束

end start ;end指令指明程序入口在标号start处

我们使用Debug来跟踪上面程序的执行过程(VSCode右键-选择“调试当前程序”)

Debug相关指令

指令 功能
R (与寄存器相关)查看CPU寄存器内容
D 查看内存中的内容
E 改写内存中的内容
U 将内存中的机器指令翻译成汇编指令
T 执行一条机器指令
P 执行循环、重复的字符串指令、软件中断或子例程

跟踪过程:

  1. 观察内存aba1 三个变量所分配存储空间的大小。

    输入指令-d ds:0

    注意,这句指令的含义为,列出 从 段地址ds、偏移地址0 的内存单元 开始的128个内存单元的内容

    一个内存单元可存放8位数据,而16进制数的一位相当于2进制数的四位

    由于a为一个字节,因而它可存在一个内存单元当中,显示为00b为一个字,因而它占用两个内存单元(2个字节=16位),显示为00 00c为一个双字,故占用四个内存单元,显示为00 00 00 00

    注意,字的高位字节和低位字节分别存在内存单元的高位和低位。上图中每一行的地址,共有16个内存单元,越往右的内存单元,地址越高。故对于b(值为0002)而言,实际存储为:低8位内存单元存02、高8位内存单元存00

  2. 显示内存中num1num2num3中存储的数据。

  3. 显示程序运行过程中各寄存器的内容。(着重关注AX寄存器)

    运行前

    运行过程中:

    AX寄存器的低8位寄存器AL(原值为6E),被赋值为03

    执行加法指令ADD,AL寄存器值加上num2的值故变为08了。

    最后,程序结束

  4. 打印程序运行结果

    注意到num3内存单元存入值08

作者:J_StrawHat
来源链接:https://www.cnblogs.com/J-StrawHat/p/13973164.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/tool/68849.html

标签: 开发工具
分享给朋友: