bjmayor 发布于 2021-09-11

6.包含多个段的程序

包含多个段的程序

程序取得所需空间有两种方法:

  1. 加载程序时为程序分配。
  2. 程序执行过程中向系统申请。。也就是动态获取。

之前的章节只有代码段,这里开始引入数据段和栈段。

阅读全文 »

bjmayor 发布于 2021-09-10

5.[BX]和loop指令-汇编8086-读书笔记5

[BX]和loop指令

[BX]

就是间接寻址。

[0] 表示 偏移地址为0

[BX] 表示内存的偏移地址 存放在BX寄存器中。

mov ax, [bx] # (ax) = ((ds)*16+(bx))

有一点需要说明:

在源程序中使用 mov ax, [0] 会被MASM编译器 编译成move ax,0, 所以不得不借助于bx寄存器。

mov bx,0
mov ax, [bx]

阅读全文 »

bjmayor 发布于 2021-09-10

nat介绍

来自公众号:网络技术平台

[TOC]

初识 NAT

IP 地址分为公网地址私有地址公网地址有 IANA 统一分配,用于连接互联网;私有地址可以自由分配,用于私有网络内部通信。

图片

随着互联网用户的快速增长,2019 年 11 月 25 日全球的公网 IPv4 地址已耗尽。在 IPv4 地址耗尽前,使用 NAT( Network Address Translation )技术解决 IPv4 地址不够用的问题,并持续至今。

NAT 技术的是将私有地址转换成公网地址,使私有网络中的主机可以通过少量公网地址访问互联网。

但 NAT只是一种过渡技术,从根本上解决问题,是采用支持更大地址空间的下一代 IP 技术,即 IPv6 协议,它提供了几乎用不完的地址空间。

阅读全文 »

bjmayor 发布于 2021-09-06

3.寄存器(内存访问)-汇编8086-读书笔记3

寄存器(内存访问)

内存中字的存储

内存是连续的单元,一个单元存放一个Byte, 8位。

譬如从0~10000, 0就叫低地址,10000 就叫高地址。

那么要存一个16位的字,就需要两个内存单元,譬如0和1.

其中低地址存放低位字节,高地址存放高位字节。

譬如 数字 20000(4E20H)

4E是高位字节, 20是地位字节,加入存放在0和1 两个内存单元中。

那么0存放的是20, 1存放的是4E.

读数据是 4E 20

内存 编号是 1 0 。 这里有点反知觉(读数据时 是 4E20, 读编号是0,1,2,3,4,5,有点反过来的感觉)。得换个角度想, 内存编号 从右往左。。数据的字节方向 也是从右往左。

阅读全文 »

bjmayor 发布于 2021-09-06

2.寄存器-汇编8086-读书笔记2

寄存器

cpu: 运算器、控制器、寄存器。

通用寄存器

AX,BX,CX,DX

8086的CPU寄存器

寄存器 作用 说明
AX 通用寄存器,存放一般性数据。为了兼容老版的8为寄存器,又分为了AH和AL
BX 通用寄存器,存放一般性数据。
CX 通用寄存器,存放一般性数据。
DX 通用寄存器,存放一般性数据。
SI
DI
SP 栈的偏移地址
BP
IP 指令指针寄存器
CS 代码段寄存器。 code stack。指向指令
SS 段寄存器。stack stack。指向栈顶的段地址。SS:SP 指向栈顶元素。
DS 段寄存器。 data stack 。指向数据。 mov AX, [0], 转移内存中的值时,DS指定内存的段地址。
ES 段寄存器
PSW

阅读全文 »