计算机基础之汇编语言学习笔记

学习来源:b站各种学习资料

前置知识:计算机组成原理等知识

学习参考的资源

汇编语言编程的速成指南[上]~从零开始的期末抢救计划 (8086汇编)_哔哩哔哩_bilibili

链接: https://pan.baidu.com/s/1tg_ZW7VD3TS_s1v_EjS89w?pwd=ak6t 提取码: ak6t

环境配置

编程环境:vscode  拓展插件选择MASM/TASM即可

环境运行

具体的运行后的参数

-t是单步运行 会显示执行一次以后 各个寄存器的内容以及下一条指令的信息

-R是显示所有寄存器的内容,但是不会运行

-G是一步到位执行完,直接看最终的结果

一般的通用寄存器都是可以存一个W的内容,也就是一个字,一般为2B

DB表示define binary定义一个字节

DW为定义一个字 一般为两个字节1234H这种

基础指令

合法的MOV指令

MOV AX,Y   1.内存到寄存器

MOV Y,AX   2.寄存器到内存

MOV AX,BX   3.寄存器到寄存器

......

程序默认的终止指令

ADD AX,X  //其第一个一般为目的操作数 也就是运算的和的结果依然存回AX中

SUB AX,X   //AX=AX-X 第一个数依然为目的操作数

INC AX   //表示AX++ 自增运算指令

DEC AX   //自减指令 表示AX--

NEG AX  //取反指令 取负数的意思

寄存器的使用

 常见的寄存器(一般都是可以存一个字的内容)

        在计算机中,我们不能直接对内存中的数据进行编辑,需要先将数据通过MOV指令移动到相应的寄存器中再进行处理。

        8086CPU中有14个16位的寄存器。例如1234H 但是由于小端存储(计算机组成原理),所以会写成3412H,也就是按字节编址的情况下的两个地址空间(一个字的长度)。因为通用寄存器为16bit的长度,所以一般可以拆成两个寄存器来使用,分别使用其8bit的内容,如AX可以拆分成AH和AL两个寄存器使用。(辅助记忆,AH为A寄存器的high的部分,也就是高位。AL可以理解为A的low低位的寄存器部分)

基地址存储器所使用到的段,非常类似于计组/操作系统中的分段存储(高度相似)

换而言之,只写[BX]就是获取其数据段的内容,也就是默认为DS:[BX] 如果有需要也可以写成CS:[BX]或者SS:[BX]两种

其中SP指针就是我们在计算机组成原理中所会学到的堆栈寻址相关的指针。

练习题

代码:

DATA SEGMENT   ;数据段
    X DW 1234H
    Y DW 2345H
    Z DW ?
DATA ENDS

STACK SEGMENT  ;堆栈段

STACK ENDS


CODE SEGMENT  ;代码段
    ASSUME DS:DATA,SS:STACK,CS:CODE  ;声明对应的关系
    MAIN:  ;程序起始的别名 随便叫什么
    MOV AX,DATA
    MOV DS,AX  ;第一步的初始化就完毕了

    MOV AX,X
    ADD AX,Y
    MOV Z,AX

    ;程序结束的标志
    MOV AH,4CH
    INT 21H

CODE ENDS
END MAIN

通过-G使其执行完毕 通过-R查看所有寄存器的数值内容

通过-D我们可以指定内存单元进行查看 然后从下一条指令的起始地址开始作为偏移量查看内容,由上图可知下一条指定的地址是076C,所以我们输入  -D 076C:0000H即可

根据小端存储的原理,可知34 12是x的内容,45 23是Y的内容,所以79 35是Z的内容,从人类的视角看,运算结果是3579H,符合1234H+2345H=3579H这样一个运算

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Simon_Smith

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

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

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

打赏作者

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

抵扣说明:

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

余额充值