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段, 堆,栈 网上摘抄了一些,自己组 ...
随机推荐
- Nginx 流量带宽等请求状态统计( ngx_req_status)
Nginx 流量带宽等请求状态统计 ( ngx_req_status) 插件下载地址: wget http://nginx.org/download/nginx-1.4.2.tar.gz git c ...
- OO第三阶段总结
软件形式化方法历史 形式化方法的研究高潮始于20世纪60年代后期,针对当时所谓"软件危机",人们提出种种解决方法,归纳起来有两类:一是采用工程方法来组织.管理软件的开发过程:二是深 ...
- Executor线程池的简单使用
我们都知道创建一个线程可以继承Thread类或者实现Runnable接口,实际Thread类就是实现了Runnable接口. 到今天才明白后端线程的作用:我们可以开启线程去执行一些比较耗时的操作,类似 ...
- yield函数的理解
1.https://blog.csdn.net/qq_33472765/article/details/80839417
- Linux用户相关指令
⒈添加用户 ①useradd [Options] 用户名 useradd -d 指定用户目录 用户名 useradd -g 用户组 用户名 ⒉指定/修改用户密码 ①passwd 用户名 ⒊删除用户(建 ...
- C/C++:函数调用规则__stdcall,__cdecl,__pascal,__fastcall
__cdecl __cdecl 是 C Declaration 的缩写,表示 C 语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈.被调用函数不会要求调用者传递多 ...
- uboot 传递的参数 mtdparts
启动uboot后,在重新烧写程序之前,查看传递给内核的参数时(命令为: printenv),看到如下内容: bootargs=console=ttyS0,115200 mtdparts=spi0.0: ...
- 基于python的k-s值计算
做评分卡模型时(假设有多个自变量,因变量即是否违约.)通常需要筛选变量. k-s值的作用类似于AUC,它期初是用来评价模型(变量)对是否违约事件的区分程度的. # -*- coding: utf-8 ...
- vue渲染时对象里面的对象的属性提示undefined,但渲染成功
场景: 从后台请求的数据结构如下: 我的list是对象,而comment又是list里的对象,渲染成功了,却报如下错: 解决办法: 添加一个:v-if
- 使用@font-family时各浏览器对字体格式(format)的支持情况
说到浏览器对@font-face的兼容问题,这里涉及到一个字体format的问题,因为不同的浏览器对字体格式支持是不一致的,这样大家有必要了解一下,各种版本的浏览器支持什么样的字体,前面也简单带到了有 ...