VS code 编写汇编代码【微机原理】

前言

以下内容源自xxx
仅供学习交流使用
请您阅读文章声明,默认同意该声明

推荐

汇编的初体验【微机原理】
使用 VS Code 进行 x86 汇编语言 MASM Dosbox Debug (仅适用 Windows 平台)

VS code 编写汇编代码

第一步 添加插件

请添加图片描述

第二步 打开文件

请添加图片描述
我打开的是E:/masm
在这里插入图片描述

第三步 编写文件

为了演示新建一个testVC文件夹
请添加图片描述
在testVC下新建一个hello.asm文件
请添加图片描述

编写hello.asm
请添加图片描述

data segment
    x           db      1
    y           db      2
    sum      db      ?
    string    db      "The result of x+y=$"
data ends

code segment
     assume cs:code,ds:data
start:     
     mov ax,data
     mov ds,ax
 
     mov dx,offset string
     mov ah,09h
     int 21h

     mov al,x
     add al,y
     mov sum,al

     add al,30h
     mov dl,al
     mov ah,02h
     int 21h

     mov ah,4ch
     int 21h
    
code ends
     end start

第四步 选择编译器

点击jsdos
在这里插入图片描述
选择 dosbox MASM-v6.11
在这里插入图片描述
底部变化
在这里插入图片描述
注意
根据自己需求,设置汇编环境
如果发现窗口不是你想要的,
请检查你的汇编环境

例如
jsdos Test
调试窗口是这样的
F8-step是单步调试
在这里插入图片描述

第五步 运行程序

右键–运行
在这里插入图片描述
结果
在这里插入图片描述

会发现我们的程序应该是hello
但是这却是test程序

第六步 调试程序

右键–调试
在这里插入图片描述

结果
在这里插入图片描述

在这里插入图片描述

会发现我们的程序应该是hello
但是这却是test程序

第七步 补充一

在VS code下
不会产生.obj文件和.exe文件
在这里插入图片描述

右键–打开DOS环境
在这里插入图片描述
结果
在这里插入图片描述

dir命令
在这里插入图片描述

会发现只有一个文件
其实test.asm是DOS环境下hello.asm的拷贝

Windows下hello.asm,
可以看到大小:482 字节

在这里插入图片描述

证明猜想

masm test
在这里插入图片描述

link test
在这里插入图片描述
test
在这里插入图片描述

debug test.exe
在这里插入图片描述
它和hello.asm对应的语句是一样的
在这里插入图片描述

第八步 补充二

DOS环境下hello.asm文件会变成test.asm
如果testVC下再新建一个.asm文件会咋样?
在这里插入图片描述
hello2.asm

data segment
      x db 11101110b
      y db 11001000b
  
data ends

code segment
     assume cs:code,ds:data
start:     
     mov ax,data
     mov ds,ax
 
     mov al,x
     add al,y
 
     mov ah,4ch
     int 21h
    
code ends
     end start

会发现
还是只有一个test.asm文件

在这里插入图片描述
在这里插入图片描述
结论

VS code提供的dos环境是互相隔离的
就算你同时打开两个dos环境
在这里插入图片描述
这两环境也是互不影响的

最后

请您阅读文章声明,默认同意该声明
打赏通道
请添加图片描述

要在VSCODE汇编语言并导入一个txt文件,你需要遵循以下步骤: 1. 打开VSCODE并创建一个新文件。 2. 在新文件中编写汇编程序代码。 3. 在汇编程序代码中添加指令来读取txt文件。 4. 保存汇编程序代码并将其命名为asm文件。 5. 在VSCODE的终端中使用汇编编译器将asm文件编译成可执行文件。 6. 运行可执行文件来读取txt文件。 下面是一个简单的示例程序,用于将一个txt文件中的内容打印到屏幕上: ``` section .data filename db 'example.txt',0 msg db 10,13,'File contents:',10,13,0 buffer times 100 db 0 section .text global _start _start: ; 打开文件 mov eax, 5 ; sys_open mov ebx, filename mov ecx, 0 ; O_RDONLY int 0x80 ; 检查文件是否打开成功 cmp eax, 0xFFFFFFFF je exit ; 读取文件 mov ebx, eax ; 文件句柄 mov eax, 3 ; sys_read mov ecx, buffer mov edx, 100 int 0x80 ; 打印文件内容 mov eax, 4 ; sys_write mov ebx, 1 ; stdout mov ecx, msg int 0x80 mov eax, 4 ; sys_write mov ebx, 1 ; stdout mov ecx, buffer int 0x80 exit: ; 关闭文件 mov eax, 6 ; sys_close mov ebx, eax ; 文件句柄 int 0x80 ; 退出程序 mov eax, 1 ; sys_exit xor ebx, ebx int 0x80 ``` 在此示例代码中,我们使用了汇编程序中的sys_open和sys_read系统调用来打开和读取txt文件。我们还使用了sys_write系统调用来将文件内容打印到屏幕上。 保存此示例代码并将其命名为example.asm。然后,打开VSCODE的终端并运行以下命令来编译示例代码: ``` nasm -f elf64 example.asm -o example.o ld example.o -o example ``` 这将生成一个名为example的可执行文件。最后,运行以下命令来运行可执行文件: ``` ./example ``` 这将打印出txt文件的内容。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日星月云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值