汇编语言学习笔记一

基础知识

安装软件dosbox debug.exe

计算机语言是用来和计算机进行交流的。

机器指令 是一串二进制数 来指导计算机的运行
机器指令使用高低电平来进行表示

汇编语言通过编译器解释成机器语言
伪指令告诉编译器怎么翻译机器语言

dosbox介绍

内存编号 十六进制数字 汇编指令

u指令我们看到的是机器指令和汇编指令
d指令我们看到的是数据
r可以查看寄存器的值
q为退出
因此接下来便是一个问题cpu怎么区分数据和指令
内存中是根据字节进行编址的

指令和数据在内存中是没有区别的

内存编号为什么是从零开始
地址线的数量决定了能找到内存的大小

数据线和控制线
数据线:决定了传递一次数据时的能力 比如数据线为八,每次可以传送八位

控制线:决定了cpu对其他部件的控制能力

一个cpu的寻址为8KB则地址总线为13
在存储器中数据和指令都是以二进制的形式存放的

内存包括很多 内存条 显存等

cpu是通过端口访问鼠标键盘等外设的

键盘和鼠标内有一个芯片 可以存储数据和指令 这个端口是连接cpu和外设的

端口有一个端口号

cpu通过主板上的电路读到数据

GPU是图像处理芯片 运算速度很快

B800:400是显存地址

cpu一定有可以存放地址信息和数据信息的地方我们称之为寄存器
程序员通过汇编语言更改寄存器的值来控制cpu从而控制计算机

DS ES SS CS 都是冒号左边的信息 IP是右边的信息
寄存器

AX BX CX DX是通用寄存器 是用来存放数据的 是16位的可以表示0~65535
这四个寄存器为了兼容每个寄存器可以分为两个8位的寄存器 eg:AX->AH+AL

下面更改寄存器的值

a表示输入指令
eg:
a
mov ax,5
这两句表示编译了没有执行
t
表示执行
我们可以观察到AX寄存器的内容已经改变了

使用过mov指令必须原目的操作数的位数一致
在这个debug软件中是按照十六进制的

当加法超过寄存器的范围时,不会向其他位进位,而是在标志寄存器中的CF=1

a
mov al,ff
mov al,2

t
t 表示单步调试

ax结果为0001

八位寄存器加法运算不会向前进位 是独立的

段地址寄存器:偏移地址寄存器
ds sp
es bp
ss si
cs di
ip
bx

8086是20个地址线,而寄存器是16位的,因此为了能够寻址位1M发明了地址加法器。地址范围为0~1M
有一个地址加法器
段地址X16+偏移地址 = 物理地址
段地址X16=基础地址
基础地址+偏移地址=物理地址

cpu怎么区分指令和数据的
u指令将某个内存当做指令显示
d将内存当做数据解释

cpu将cs和ip指向的内容解释为指令

可以通过下面方式更改段寄存器的值

r cs
0
便将cs改为0

d 2000:0 按照数据查看当前位置的数据

使用命令改变内存中的数据

-d 2000:0 查看当前位置的数据

-e 2000:0
便可写入数据

可以更改cs和ip的值来设置想要在哪里执行代码

-r cs
:2000
-r ip
:0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值