---
title: 汇编语言程序设计:用vscode配置环境,简单命令
abbrlink: 39790
date: "2025-03-23 16:36:49"
updated: "2025-07-04 18:44:32"
desc: 试了一下,老师发的那个用起来真不习惯,但老师说可以自行配置编译环境,能跑就行
categories:
    - 学校学习
tags:
    - 学习
    - 教程
    - 编程
    - 汇编语言
cover: https://i.ibb.co/k25vMchT/2025-03-23-164031.webp
---

试了一下,老师发的那个用起来真不习惯,但老师说可以自行配置编译环境,能跑就行

## 配置编译环境

所以我想到了[vscode](https://code.visualstudio.com/),可以在vscode插件列表里找到相关的插件[masm-tasm](https://marketplace.visualstudio.com/items?itemName=xsro.masm-tasm)

![2025-03-23-164031](https://i.ibb.co/k25vMchT/2025-03-23-164031.webp)

<!--more-->

要改一下这个插件的设置
![2025-03-23-164503](https://i.ibb.co/WWvnhGYh/2025-03-23-164503.webp)
改这两项就行了

## 简单的命令操作

| 指令类型   | 指令 | 原始词       | 功能描述         |
| :--------- | :--- | :----------- | :--------------- |
| 内存操作   | D    | Display/Dump | 查看内存内容     |
| 内存操作   | E    | Edit         | 修改内存内容     |
| 反汇编     | U    | Unassemble   | 机器码转汇编     |
| 执行控制   | G    | Go           | 运行程序         |
| 执行控制   | T    | Trace        | 单步执行程序     |
| 寄存器操作 | R    | Register     | 查看或修改寄存器 |

| 寄存器 | 原始词      | 描述                           |
| :----- | :---------- | :----------------------------- |
| AX     | Accumulator | 数据存储与运算（累加器）       |
| BX     | Base        | 数据存储与运算（基址寄存器）   |
| CX     | Counter     | 数据存储与运算（计数器寄存器） |
| DX     | Data        | 数据存储与运算（数据寄存器）   |

### **内存操作指令**

#### 1. **查看内存（D 指令，Dump）**

​**命令行会话**​：

```plaintext
; 启动Debug后默认进入提示符
-d 100        ; 输入命令：查看地址100开始的内存
0B8D:0100  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
0B8D:0110  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
```

​**说明**​：

- `d` 是 `Dump` 的缩写
- 输出格式：`段地址:偏移地址 数据（十六进制）- ASCII码表示`

#### 2. **修改内存（E 指令，Enter）**

​**命令行会话**​：

```plaintext
-e 100 41 42 43  ; 输入命令：向地址100写入A(41)、B(42)、C(43)
-d 100            ; 再次查看验证
0B8D:0100  41 42 43 00 00 00 00 00-00 00 00 00 00 00 00 00  ABC.............
```

​**说明**​：

- `e` 是 `Enter` 的缩写
- 可连续输入多个字节（空格分隔）

### **二、反汇编指令**

#### 3. **机器码转汇编（U 指令，Unassemble）**

​**命令行会话**​：

```plaintext
-a 100           ; 先用A指令写入汇编代码
0B8D:0100 mov ax, 1234
0B8D:0103 add ax, bx
0B8D:0105 int 21h
-u 100           ; 输入命令：反汇编地址100的代码
0B8D:0100 B83412        MOV     AX,1234
0B8D:0103 01D8          ADD     AX,BX
0B8D:0105 CD21          INT     21
```

​**说明**​：

- `u` 是 `Unassemble` 的缩写
- 反汇编结果显示机器码（十六进制）和对应的汇编指令

### **三、执行控制指令**

#### 4. **运行程序（G 指令，Go）**

​**命令行会话**​：

```plaintext
-r ax            ; 查看初始AX值
AX=0000
-g=100 105       ; 输入命令：从100运行到105（断点）
AX=1234          ; 运行后AX的值
```

​**说明**​：

- `g` 是 `Go` 的缩写
- 格式：`g=起始地址 结束地址`，`=`可省略

#### 5. **单步执行（T 指令，Trace）**

​**命令行会话**​：

```plaintext
-t              ; 输入命令：执行当前IP指向的指令
AX=1234  IP=0103  ; 执行完MOV AX,1234后，IP指向下一条指令
-t              ; 再次单步执行
AX=1234+BX值  IP=0105  ; 执行ADD AX,BX
```

​**说明**​：

- `t` 是 `Trace` 的缩写
- 每执行一条指令，自动显示寄存器变化

### **四、寄存器操作指令**

#### 6. **修改寄存器（R 指令，Register）**

​**命令行会话**​：

```plaintext
-r bx           ; 输入命令：查看并修改BX寄存器
BX=0000
:1122          ; 输入新值（十六进制）
-r             ; 查看所有寄存器
AX=1234  BX=1122  CX=0000  DX=0000  ...
```

​**说明**​：

- `r` 是 `Register` 的缩写
- 直接输入`r`显示所有寄存器，输入`r 寄存器名`可修改指定寄存器

### **五、完整调试流程示例**

​**目标**​：计算 `1234h + 5678h` 并存入 AX
​**命令行会话**​：

```plaintext
; 1. 写入汇编代码
-a 100
0B8D:0100 mov ax, 1234
0B8D:0103 mov bx, 5678
0B8D:0106 add ax, bx
0B8D:0108 hlt

; 2. 反汇编验证
-u 100
0B8D:0100 B83412        MOV     AX,1234
0B8D:0103 BB7856        MOV     BX,5678
0B8D:0106 01D8          ADD     AX,BX
0B8D:0108 F4            HLT

; 3. 单步执行
-t 4                  ; 执行4条指令（含HLT）
AX=68AC              ; 结果：1234+5678=68AC
```

​**注意**​：

1. 命令行提示符为`-`（Debug 工具默认）
2. 十六进制数无需加后缀（默认十六进制）
3. 按`Enter`键执行命令，按`Ctrl+C`退出 Debug


---

**作者：**xingwangzhe

**本文链接：**[https://xingwangzhe.fun/posts/39790/](https://xingwangzhe.fun/posts/39790/)

本文采用[知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议](https://creativecommons.org/licenses/by-nc-sa/4.0/)进行许可。