AT&T汇编 基本数学功能

加法:

.section .data

val:

.quad 3481219651

val1:

.quad 6678934517

output:

.asciz "The res is %qd\n"

.section .text

.globl _start

_start:

movl val, %eax

movl val + 4, %ebx

movl val1, %ecx

movl val1 + 4, %edx

addl %eax, %ecx

adcl %ebx, %edx

pushl %edx

pushl %ecx

pushl $output

call printf

movl $1, %eax

movl $0, %ebx

int $0x80

减法:

.section .data

val:

.quad 3481219651

val1:

.quad 6678934517

output:

.asciz "The res is %qd\n"

.section .text

.globl _start

_start:

movl val1, %eax

movl val1 + 4, %ebx

movl val, %ecx

movl val + 4, %edx

subl %eax, %ecx

sbbl %ebx, %edx

pushl %edx

pushl %ecx

pushl $output

call printf

movl $1, %eax

movl $0, %ebx

int $0x80

乘法:

1.mul 指令只能用于无符号整数:

.section .data

val:

.int 316722

val1:

.int 129907

result:

.quad 0

output:

.asciz "The res is %qd\n"

.section .text

.globl _start

_start:

movl val, %eax

mull val1

movl %eax, result

movl %edx, result + 4

pushl result + 4

pushl result

pushl $output

call printf

movl $1, %eax

movl $0, %ebx

int $0x80

2.imul 可用于带符号和无符号整数:

imul des ( AL,AX,EAX 中为隐含操作数,乘积结果被存放在 AX寄存器 or DX : AX 寄存器对 or EDX : EAX 寄存器对中 )

imul src, des ( src 可以是 16 or 32 位的寄存器 or 内存中, des 必须是 16 or 32 位的通用寄存器 )

imul multi, src, des ( multi 与 src 的快速乘法的结果存放在 des 中 )

.section .data

val:

.int 10

val1:

.int 12

val2:

.int 100

output:

.asciz "The res is %qd\n"

.section .text

.globl _start

_start:

movl val, %eax

movl val1, %ebx

imull %eax, %ebx

movl val2, %edx

imull $4, %edx, %ecx

movl $1, %eax

movl $0, %ebx

int $0x80

除法:

1.无符号除法

被除数 被除数长度 余数
AX 16位 AL AH
DX : AX 32位 AX DX
EDX : EAX 64位 EAX EDX

div divisor

.section .data

dividend:

.quad 4537124

divisor:

.int 35

quotient:

.int 0

remainder:

.int 0

output:

.asciz "quotient is %d, remainder is %d\n"

.section .text

.globl _start

_start:

movl dividend, %eax

movl dividend + 4, %edx

divl divisor

movl %eax, quotient

movl %edx, remainder

pushl remainder

pushl quotient

pushl $output

call printf

addl $12, %esp

movl $1, %eax

movl $0, %ebx

int $0x80

2.带符号除法 idiv divisor 类似

时间: 2024-12-21 21:56:56

AT&T汇编 基本数学功能的相关文章

php数组的数学功能相关常用函数

php数组中有一些函数与数学相关的函数,大多都是以array开头然后下划线接一个数学上的英文单词,如下: 1 array_diff() 2 array_diff_assoc() 3 array_intersect() 4 array_intersect_assoc() 5 array_sum() 6 array_product() 7 array_count_values() 首先是数组集合函数,差集array_diff,用于得到目标数组和其他数组的都不同的那些元素 1 $arr = [1, 2

汇编--常用汇编指令与标志位关系

加法指令 ADD (addition) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最高有效位向高位无进位 OF=1   两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反. OF=0   两个不同符号数相加,或同符号数相加,结果符号与其相同. 带进位加法指令 ADC (add with carry) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最低有效位相高位无进位 OF=1   两个同符号数相加,结果符号与其相反, O

Python标准库12 数学与随机数 (math包,random包)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经在Python运算中看到Python最基本的数学运算功能.此外,math包补充了更多的函数.当然,如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy项目,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用. 此外,random包可以用来生成随机数.随机数不仅可以用于数学用途,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性. m

[自制简单操作系统] 1、从0-1到汇编再到c语言的奥秘

目录: 1.用0-1编写最简单的操作系统 2.用汇编改写上面0-1程序 2.1 只用DB的汇编改写版  2.2 加入RESB汇编的改写版  2.3 进一步使用汇编替换0-1文件  2.4 核心程序也用汇编改写  2.5 向汇编程序中加入IPL(启动程序装载器)  2.6 从启动区执行操作系统(读盘的应用) 3.汇编和C语言混合开发 3.1 32位开发及C语言混合开发引入 3.2 汇编引入C语言(用汇编写C语言函数)  3.3 C语言实现内存写入  3.4 C语言指针的强大  3.5 色号设定与调

sqlserver2016新功能

SQL Server 2016中的新功能(数据库引擎) 2017年1月13日  23分钟阅读时长 作者 本主题适用于:  SQL Server(从2016开始)  Azure SQL数据库  Azure SQL数据仓库  并行数据仓库 本主题总结了SQL Server数据库引擎的SQL Server 2017版本中引入的增强功能. 新功能和增强功能增强了设计,开发和维护数据存储系统的架构师,开发人员和管理员的功能和生产力. 要查看其他SQL Server组件中的新功能 ,请参阅SQL Serve

汇编常见伪指令

汇编常见伪指令 转自: http://blog.chinaunix.net/uid-20547722-id-1647296.html 一.与宏有关的伪指令 在宏定义时,为了满足某种特殊需要,汇编语言还提供了几个伪指令. 9.3.1 局部标号伪指令LOCAL 在宏定义体中,如果存在标号,则该标号要用伪指令LOCAL说明为局部标号,否则,当在源程序中,有多于一次引用该宏时,汇编程序在进行宏扩展后将会给出:标号重复定义的错误. 伪指令LOCAL的一般格式如下: LOCAL 标号1, 标号2, …… 伪

如何让Maple中的数学引擎进入你的桌面应用程序和网站

MapleNET数学服务套件将Maple 2015强大的数学引擎引入您的应用程序和网站.使用MapleNET,您可以添加数学计算和可视化功能到网页和桌面程序中,通过互联网/局域网分享“活”的Maple文件,以及开发丰富的技术网站内容. 新增支持移动设备端的访问 所有MapleNet交互式文档都可以通过您的平板.手机等设备使用,包括使用方程编辑器.活动条.刻度盘等. 在MapleNet上,使用iPad.安卓平板进行工作.学习. 直接使用Maple交互式文档,不再需要Java插件•l 所有元件包括方

最强数学库GSL(GNU Scientific Library) Qt环境下部署

1.前言 GSL(GNU Scientific Library)是一个 C 写成的用于科学计算的库,有超过1000个函数,该库提供了关于数学计算的很多方面,Matlab的大部分函数几乎都能借助它实现,可以在数值计算中省却很多事情.关于GSL的详细功能.GSL的功能及相关头文件的介绍可以见此偏文章:http://blog.csdn.net/augusdi/article/details/8834182,或者看看这位仁兄的blog:http://www.cnblogs.com/Jedimaster/

常用汇编指令及其影响的标志位

加法指令 ADD (addition) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最高有效位向高位无进位 OF=1   两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反. OF=0   两个不同符号数相加,或同符号数相加,结果符号与其相同. 带进位加法指令 ADC (add with carry) 指令对标志位的影响: CF=1   最高有效位向高位有进位 CF=0   最低有效位相高位无进位 OF=1   两个同符号数相加,结果符号与其相反, O