王爽汇编语言课程笔记
本笔记是记录王爽老师的汇编语言(X86)教材相关课程内容
视频地址:https://www.bilibili.com/video/BV1mt411R7Xv
代码参考:https://github.com/NekoSilverFox/Assembly
实验环境配置
原课程使用了
DOSBOX
的一款软件来模拟X86
环境,配置稍有点麻烦,后来我发现Vscode
上有MASM
的插件,并且自带DOSBOX
模拟环境,故使用这个工具来学习,下面说一下配置。
- 打开
Vscode
扩展(ctrl+shift+x
) - 搜索
MASM/TASM
,下载 - 点击插件上的小齿轮,选择
插件扩展
,选择模拟器为dosbox
,汇编工具masm
,重启vscode
- 测试
- 新建一个
ASM
程序:demo.asm
- 右键-
运行当前程序(汇编+链接+运行)
,自动跳出dosbox
环境
- 新建一个
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'welcome to masm ' ;ds:[si]
db 00000010B ;绿色
db 00100100B ;绿底红色
db 01110001B ;白底蓝色
datasg ends
stacksg segment
db 128 dup(0) ;128个内存栈
stacksg ends
codesg segment
start: mov ax,datasg
mov ds,ax ;声明数据段地址
mov ax,stacksg
mov ss,ax
mov sp,128 ;初始化栈
mov ax,0B800H
mov es,ax ;显示缓冲区
mov si,0
mov di,160*10+30*2
mov bx,16
mov dx,0
mov cx,3
showm: push bx
push cx
push si
push di
mov cx,16
mov dh,ds:[bx]
showr: mov dl,ds:[si]
mov es:[di],dx
add di,2
inc si
loop showr
pop di
pop si
pop cx
pop bx
add di,160
inc bx
loop showm
mov ax,4c00H
int 21H
codesg ends
end start
第一部分 基础知识&寄存器&内存&栈
1、基础知识
1.1 进制转换
1.2 机器语言和汇编语言
-
机器语言
:就是1010101...
给微型计算机直接执行的语言 -
汇编语言
:克服机器语言难以阅读的缺点- 汇编指令 可以通过编译器翻译成机器码
- 伪指令 告诉编译器怎么翻译
- 符号体系 +-*/编译器管
汇编指令存放在内存里,内存条,主内存,绝大多数指令和数据都是放在内存条里的
DOSbox指令
-debug
-u
-d
-
-debug
进入调试模式,以下指令都是在调试模式中使用的 -
-u
指令 显示的是汇编指令
-
-d
指令 显示的是机器数据