汇编语言学习笔记四

news/2024/11/1 16:35:37/

字符

字符是以ASCII码的形式存储的,一个字符对应着8为二进制数,2位16进制数。
所以可以得到对应的字符地址。

assume ds:data
data segmentdb 'hello'db 'world'
data ends

and or指令

根据ASCII码,字符的大写和小写相差一个0010 0000,比如a对应的ASCII码是0110 0001,那么A则对应的是0100 0001,对比可以发现他们只是第5位不同,第5位为1,则是小写,否则是大写。
现在通过改变字符的大小写来熟悉and和or的用法,下面将HeLLo全变成小写,WorlD全变成大写。
and 是置0
or是置1

assume cs:code, ds:data
data segmentdb 'HeLLo'db 'WorlD'
data endscode segment
start:mov ax, datamov ds, axmov bx, 0mov cx, 5s:mov ax, [bx]and ax, 11011111b;如果第5位为1的话,那么将其置为0,即将其变为大写mov [bx], ax;将ax存到[bx]对应的内存单元中,注意这里不是将其存到bx寄存器中mov ax, [5+bx]or ax, 00100000;如果第5位为0的话,那么将其置为1,即将其变为小写mov [5+bx], axinc bxjmp scode ends
end start

mov ax, [bx]放入ax中的是字节型数据。
mov ax, [bx+200]放入ax中的是字型数据。

寄存器SI和DI

SI和DI的功能和bx的功能类似,但这两个寄存器不能分为两个8位的寄存器来使用。
mov ax, [bx+di]或者mov ax, [bx+si]放入ax的是字型数据。
该指令也可以写成mov ax, [bx][di]

BX、SI、DI和BP寄存器

  1. 这四个寄存器都可以用[]这样的形式寻址。其余的ax、cx、dx以及ds都不能用来寻址。
  2. BX和BP只能选择一个和SI和DI搭配或者四个自己单独出现,并且SI和DI不能搭配。
  3. 使用BP时,默认的段地址在SS中。

特别补充

在这里插入图片描述
如图可见,其内存的物理地址为10000-10003H,地址信息也可以表示为1000: 0-1000: 3

assume cs:codeseg, ds:dataseg
dataseg segmentdb 23h, 11h, 22h, 66h
dataseg endscodeseg segmentmov ax, 1000hmov ds, axmov bx, 0mov cx, 4mov ax, [bx]mov ax, [bx+1]mov ax, [bx+2]mov ax, [bx+3]codeseg endsend

执行下面四条语句时,对应的ax的值为0023h, 1123(字型数字,地址高位在前,低位在后), 2211, 6622
mov ax, [bx]
mov ax, [bx+1]
mov ax, [bx+2]
mov ax, [bx+3]

指令mov ax, [bx+si]以及mov ax, [bx,+si+10]和mov ax, [bx]都是类似的,特别注意的是这个字型数据,始终记住内存地址是以8位二进制数为刻度的,即偏移+1,内存中的数据的位数走8位


http://www.ppmy.cn/news/60527.html

相关文章

c++——入门(下)

6. 引用 6.1 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。 类型& 引用变量名(对象名) 引用实体; void TestRef() {int a 1…

Linux基础IO【重定向及缓冲区理解】

✨个人主页: 北 海 🎉所属专栏: Linux学习之旅 🎃操作环境: CentOS 7.6 阿里云远程服务器 文章目录 🌇前言🏙️正文1、文件描述符1.1、先描述,再组织1.2、files_struct1.3、分配规则…

阿里云g8i服务器Intel Xeon(Sapphire Rapids) Platinum 8475B

阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器,3.2 GHz睿频,g8i实例采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服…

【设计模式】策略模式

目录 一、定义二、结构三、优点四、缺点五、使用场景六、代码示例 一、定义 1.该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户 2.策略模式属于对象行为模式,它通过对算法进…

Shell脚本2

自定义局部变量 :定义在一个脚本文件中的变量 只能在这个脚本文件中使用的变量,局部变量 语法: var_namevalue 变量定义规则 变量名称可以有字母,数字和下划线组成, 但是不能以数字开头 等号两侧不能有空格 在bash环境中, 变量的默认类型都是字符串…

二叉树(纲领篇)

文档阅读 文档阅读 二叉树解题的思维模式分两类: 1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。 2、是否可以定义一个递归函数,通过子问题&a…

【pinia】新一代更好用的状态管理器Pinia

目录 一,Pinia状态管理库 1.Pinia介绍 2.Pinia的核心特性 3.核心概念 4.Pinia vs Vuex 5.Pinia & Vuex的不同 6.Pinia名字 二,Pinia基本使用 1.安装Pinia 2.配置main.ts文件 3.创建store/index.ts文件 4.使用数据 三,状态更新…

爬虫实验笔记

这里的爬虫实验害暂时没有遇到验证码等问题,步骤可以简单概括为: 1.找到爬虫必要的信息; 2.内容提取; 3.将提取到的内容保存至xlsx文件 1.找到爬虫必要的信息 以zh为例,首先找一个自己感兴趣的贴,进入开…