Linux 之 AT&T汇编语言 mov、add、sub指令、数据段
mov指令的几种形式:
mov 寄存器、 数据
mov ax,8888
mov 寄存器、 寄存器
mov bx,ax
mov 寄存器、 内存单元
mov ax,[0]
mov 内存单元、寄存器
mov [0],ax
mov 段寄存器、寄存器
mov ds,ax
add和sub指令和mov一样,都有2个操作对象。
sub和add类似,不过是相减,
sub ax,9 给ax减9,之后的结果赋值给ax
sub ax,bx 语意是ax = bx - ax
sub ax,[0] 将偏移地址为0的内存单元 - ax 再赋值给ax
试一下:能不能用他们直接操作段地址? (试过了,不行)
3.5 数据段
前面讲过,对于8086 PC机,我们可以根据需要将一组内存单元定义为一个段(可以是代码段,数据段等)
如何访问内存中的数据段呢?
将一段内存当作数据段,是我们在编程时的一种安排,我们可以在具体操作的时候,
用DS存放数据段的段地址,再根据需要,用相关指令访问数据段中的具体单元
mov ax,123BH
给AX寄存器里放123BH
mov ds,ax
将123BH送入DS中,作为数据段的段地址。
mov ax,0
用AX存放累加结果
add ax,[0]
将数据段的第一个字,(偏移地址为0),加到AX中,会把1也拖过去做高位字节,因为0那里是八位的数据,要凑齐16位的,
add ax,[2]
将数据段的第三个字(0.1.2),(偏移地址为2),加到AX中去,会把3也拖过去。
add ax,[4]
将数据段的第五个字(0.1.2.3.4),(偏移地址为4),加到AX中去,会把5也拖过去。
3.1~3.5,
字在内存单元中存储时,要用两个地址连续的内存单元来存放
字的低位字节存放在低地址单元,高位字节存放在高地址单元中。
用MOV指令要访问内存单元的时候,可以在MOV指令中只给出单元的偏移地址。
此时,段地址默认在DS寄存器中。
在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器,低地址单元和低8位寄存器相对应。
mov,add,sub是具有两个操作对象的指令,jmp是具有一个操作对象的指令
Linux 之 AT&T汇编语言 mov、add、sub指令、数据段的更多相关文章
- Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- linux平台学x86汇编语言学习集合帖
linux平台学x86汇编语言学习集合帖 linux平台学x86汇编(一):https://blog.csdn.net/shallnet/article/details/45543237 linux平 ...
- Linux内核--网络栈实现分析(七)--数据包的传递过程(下)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855 更多请查看专栏,地 ...
- 汇编语言---call和ret指令
汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈 ...
- Linux内核--网络栈实现分析(二)--数据包的传递过程--转
转载地址http://blog.csdn.net/yming0221/article/details/7492423 作者:闫明 本文分析基于Linux Kernel 1.2.13 注:标题中的”(上 ...
- 汇编语言-[BX]和loop指令
汇编语言-[BX]和loop指令 [BX]指令介绍 mov ax,[bx] 功能: bx为偏移地址,段地址默认为ds.因此,上面指令作用就是将ax中的数据送入内存ds:bx处,即:((ds)*16 + ...
- 数据段描述符和代码段描述符(二)——《x86汇编语言:从实模式到保护模式》读书笔记11
这篇博文,我们编写一个C语言的小程序,来解析数据段或者代码段描述符的各个字段.这样我们阅读原书的代码就会方便一点,只要运行这个小程序,就可以明白程序中定义的数据段或者代码段的描述符了. 这段代码,我用 ...
- LINUX下目标文件的BSS段、数据段、代码段
http://blog.chinaunix.net/uid-27018250-id-3867588.html bss 未初始化的全局数据 data 已经初始化的全局数据 text 代码段,机器指令 r ...
- 【转】linux代码段,数据段,BSS段, 堆,栈
转载自 http://blog.csdn.net/wudebao5220150/article/details/12947445 linux代码段,数据段,BSS段, 堆,栈 网上摘抄了一些,自己组 ...
随机推荐
- HDU 2191 - 单调队列优化多重背包
题目: 传送门呀传送门~ Problem Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种 ...
- JQuery中的$.getScript()、$.getJson()和$.ajax()方法
$.getScript() 有时候,在页面初次加载时就取得所需的全部JavaScript文件是完全没有必要的.虽然可以在需要哪个JavaScript文件时,动态地创建<script>标签, ...
- 在手机的浏览器上通过连接打开App
Android系统中实现 1.在系统系统自带的浏览器中 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]& ...
- Python3学习笔记11-循环语句
条件判断使用if,需要加上冒号,当条件判断为True时,执行if下的代码块,为false就什么也不做 只要var1不是0,非空字符串,非空list等,就判断为True.否则为False var1 = ...
- 关于Mybatis的SQL映射文件中in关键字的用法
有一个需求是可以选择多个设备进行删除,于是想到将多个设备id拼成字符串作为参数,以逗号隔开,如:"123,234,456". SQL如下: <delete id=" ...
- oracle instantclient_11_2插件安装
1.安装plsql 2.instantclient_11_2下载,解压到目录 D:\DevTools\instantclient_11_2 3.打开plsql, 点击“取消” 4.选择“工具”--&g ...
- js实现弹窗居中
在一些页面中,我们总会遇到一些弹窗不居中的时候,还要根据浏览器的大小来调整弹窗的弹出位置, 之前我也遇到这样的问题,现在我把我知道的呈现给大家 css样式 .windowBox{ width:500p ...
- CentOS 6.5环境下使用HAProxy+apache实现web服务的动静分离
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...
- dellR720服务器设置光盘引导流程安装cenos7
1.开机,按F10,进入系统引导界面,选择加载系统选项,并选择redhat 7.1选项 系统提示不支持,选择仍然继续,根据提示设置BIOS设置启动,重启 2.根据提示按F11进入BIOS启动设置,选择 ...
- 源码编译安装mysql5.5.33
源码编译安装mysql5.5.33 一.安装cmake编译工具 跨平台编译器 # yum install -y gcc* # yum install -y cmake 解决依赖关系 # yum ins ...