首页 > 技术文章 > 汇编语言课程笔记

star-air 2021-09-21 11:45 原文

王爽汇编语言课程笔记

本笔记是记录王爽老师的汇编语言(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指令 显示的是 机器数据


推荐阅读