- 浏览: 1229451 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (883)
- Spring (101)
- Swing (1)
- Mysql (21)
- Js (59)
- Jsp (2)
- Hibernate (19)
- Myeclipse (5)
- SqlServer 2000 (2)
- poi (15)
- Java (70)
- SSH (12)
- Html (47)
- Fusion Charts (1)
- C\C++ (2)
- 汇编 (36)
- Jquery (37)
- Struts2 (6)
- Ubuntu (16)
- powerDesinger (4)
- Jboss (3)
- JAX-RS (13)
- JAXB (5)
- JAX-WS (11)
- JMS (4)
- WebSocket (8)
- PHP (16)
- Flash (1)
- maven (3)
- Oracle (8)
- HttpClient (6)
- sqlserver (19)
- svn (5)
- Tomcat (3)
- Jdbc (3)
- EsayUi (11)
- 微信公众平台 (19)
- IIS (2)
- Freemarker (11)
- Comet (1)
- Spring MVC (85)
- JBoss Seam (3)
- 二维码 (9)
- Spring Security (4)
- Ehcache (3)
- Apache Shiro (7)
- jackson (16)
- JPA (8)
- jcaptcha (2)
- RSA (2)
- Ajax (6)
- 跟我学Shiro (0)
- Spring4 (19)
- 跟我学spring3 (0)
- css (32)
- excel (4)
- Filter (3)
- 微信公众帐号开发教程 (0)
- Android (6)
- log4j (6)
- 淘宝接口 (17)
- 支付集成 (3)
- 单点登录 (3)
- Html5 (27)
- 移动平台前端 (3)
- Linux (44)
- FusionCharts (27)
- Json Jackson Xml (5)
- 方培工作室-微信开发 (0)
- Apache与Tomcat与IIS整合 (10)
- Nginx (17)
- webService (2)
- apache (4)
- lucene (3)
- lodop (2)
- Shiro (3)
- zTree (2)
- ireport (12)
- Servlet3.0 (5)
- 前端美工 (19)
- AngularJS (1)
- C#开发微信门户及应用 (0)
- Shell (3)
- bat脚本 (16)
- Bootstrap (26)
- Less (10)
- photoshop (6)
- Redis (6)
- Mongodb (10)
- MyBatis (3)
- 数据结构 (0)
- 读写分离-主从复制 (0)
- JFinal (0)
- 百度地图api (3)
- hadoop-hbase-hive-spark (3)
- WebStorm (2)
- Quartz (5)
- ios (0)
- Mina (8)
- Android Studio (4)
- Ratchet教程 (0)
- 移动端重构系列 (1)
- cubic-bezier贝塞尔曲线CSS3动画工具 (1)
- nginx+tomcat+memcached集群 (0)
- 集群 (0)
- ZooKeeper (3)
- Dubbo (0)
- vpn (0)
- kafka (0)
- JVM垃圾回收机制 (0)
- 微信小程序 (0)
- Lua (0)
- Hystrix (0)
- Vue.js (0)
- mycat (0)
- Openresty (0)
- springBoot (0)
- 新分类 (0)
- guava (0)
- 大数据 (0)
- Sentinel (0)
最新评论
-
JackMacing:
中文怎么解决?
SpringMVC与iReport(JasperReports) 5.6整合开发实例 -
18335864773:
用pageoffice把.可以实现在线的文档操作.直接转pdf ...
转:使用jasperreport动态生成pdf,excel,html -
linhao0907:
推荐一款轻量开源的支付宝组件:https://github.c ...
关于Alipay支付宝接口(Java版) -
songronghu:
太好了,非常有用,谢谢分享~
Java ConcurrentModificationException 异常分析与解决方案 -
wzwahl36:
http://www.atool.org/json2javab ...
Java下利用Jackson进行JSON解析和序列化
MUL: 无符号乘
;影响 OF、CF 标志位 ;指令格式: ;MUL r/m ;参数是乘数 ;如果参数是 r8/m8, 将把 AL 做乘数, 结果放在 AX ;如果参数是 r16/m16, 将把 AX 做乘数, 结果放在 EAX ;如果参数是 r32/m32, 将把 EAX 做乘数, 结果放在 EDX:EAX
; Test27_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data val dd 8 .code main proc ;8 位 mov al, 0FFh mul byte ptr val PrintHex ax ;07F8 ;16 位 mov ax, 0FFFFh mul word ptr val PrintHex dx ;0007 PrintHex ax ;FFF8 ;32 位 mov eax, 0FFFFFFFFh mul val PrintHex edx ;00000007 PrintHex eax ;FFFFFFF8 ret main endp end main
;把上面的例子稍作修改(mul -> imul), 得到了不同的结果: ; Test27_2.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data val dd 8 .code main proc ;8 位 mov al, 0FFh imul byte ptr val PrintHex ax ;FFF8 ;16 位 mov ax, 0FFFFh imul word ptr val PrintHex dx ;FFFF PrintHex ax ;FFF8 ;32 位 mov eax, 0FFFFFFFFh imul val PrintHex edx ;FFFFFFFF PrintHex eax ;FFFFFFF8 ret main endp end main
IMUL: 有符号乘
;影响 OF、CF 标志位 ;第一种指令格式: ;IMUL r/m ;单操作数 ;如果参数是 r8/m8, 将把 AL 做乘数, 结果放在 AX ;如果参数是 r16/m16, 将把 AX 做乘数, 结果放在 EAX ;如果参数是 r32/m32, 将把 EAX 做乘数, 结果放在 EDX:EAX ;以上这些都是和 MUL 一样的, 只是运算结果有时一样、有时不一样. ;IMUL 还有另外两种指令格式: ;IMUL r16/r32, r16/r32/m16/m32/i ;双操作数, (1)*(2) -> (1) ;IMUL r16/r32, r16/r32/m16/m32, i ;三操作数, (2)*(3) -> (1) ;其中常数 i 的位数可以 <= 但不能 > 其他操作数
; Test27_3.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data val dd 8 .code main proc ;IMUL 两个操作数 mov eax, 7 imul eax, val PrintDec eax ;56 ;IMUL 三个操作数 imul eax, val, 9 PrintDec eax ;72 ret main endp end main
;MUL 与 IMUL 结果的一致于不一致: ; Test27_4.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data val db 7Fh .code main proc ;如果操作数都没有符号位, 结果一致 mov al, 7Fh mul val PrintHex ax ;3F01 mov al, 7Fh imul val PrintHex ax ;3F01 ;如果操作数的其中之一有符号位, 结果不一致 mov al, 80h mul val PrintHex ax ;3F80 mov al, 80h imul val PrintHex ax ;C080 ;如果操作数都有符号位, 结果也一致 inc val mov al, 80h mul val PrintHex ax ;4000 mov al, 80h imul val PrintHex ax ;4000 ret main endp end main
DIV、IDIV: 无符号除、有符号除
;它们没有定义对 EFLAGS 的影响 ;它们的指令格式: ;DIV r/m ;参数是除数 ;如果参数是 r8/m8, 将把 AX 做被除数; 商 -> AL, 余数 -> AH ;如果参数是 r16/m16, 将把 DX:AX 做被除数; 商 -> AX, 余数 -> DX ;如果参数是 r32/m32, 将把 EDX:EAX 做被除数; 商 -> EAX, 余数 -> EDX
; DIV 测试 ; Test27_5.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ;除数是 8 位 mov ax, 17 ;被除数 mov cl, 3 ;除数 div cl PrintDec al ;5 - 商 PrintDec ah ;2 - 余数 ;除数是 16 位 mov dx, 0 ; mov ax, 17 ;dx:ax 是被除数 mov cx, 3 ;cx 是除数 div cx PrintDec ax ;5 - 商 PrintDec dx ;2 - 余数 ;除数是 32 位 mov edx, 0 ; mov eax, 17 ;edx:eax 是被除数 mov ecx, 3 ;ecx 是除数 div ecx PrintDec eax ;5 - 商 PrintDec edx ;2 - 余数 ret main endp end main
;IDIV 测试 ; Test27_6.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ;除数是 8 位 mov al, -17 cbw ;ax 是被除数 mov cl, 3 ;除数 idiv cl PrintDec al ;-5 - 商 PrintDec ah ;-2 - 余数 ;除数是 16 位 mov ax, -17 cwd ;dx:ax 是被除数 mov cx, 3 ;cx 是除数 idiv cx PrintDec ax ;-5 - 商 PrintDec dx ;-2 - 余数 ;除数是 32 位 mov eax, -17 cdq ;edx:eax 是被除数 mov ecx, 3 ;ecx 是除数 idiv ecx PrintDec eax ;-5 - 商 PrintDec edx ;-2 - 余数 ret main endp end main
发表评论
-
学 Win32 汇编[34] - 宏汇编(1)
2011-12-22 13:25 760从接触 C 语言时, 我就不大喜欢宏; 但为了看懂别人的代码也 ... -
学 Win32 汇编[33] - 探讨 Win32 汇编的模块化编程
2011-12-22 13:23 586我觉得所谓的模块化有两种: "假模块化" ... -
学 Win32 汇编[32] - 子程序进阶
2011-12-20 09:49 701接: 学 Win32 汇编[9]: 子过程中的变量声明 ... -
学 Win32 汇编[31] - 结构与联合
2011-12-20 09:48 545结构和联合分别用 struct、union 定义, 都是 en ... -
学 Win32 汇编[30] - 条件及循环伪指令: .IF、.WHILE、.REPEAT 等
2011-12-20 09:48 2120.IF、.ELSEIF、.ELSE、.ENDIF: 条件伪指令 ... -
学 Win32 汇编[29] - 串指令: MOVS*、CMPS*、SCAS*、LODS*、REP、REPE、REPNE 等
2011-12-20 09:47 1973这里的 "串" 并不单指字符串, 包括所有 ... -
学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
2011-12-20 09:46 1463跳转指令分三类:一、无条件跳转: JMP;二、根据 CX、EC ... -
学 Win32 汇编[26] - 加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP
2011-12-19 09:02 1466;INC(Increment): 加一;DEC(Decreme ... -
学 Win32 汇编[25] - 符号扩展指令: CBW、CWDE、CDQ、CWD
2011-12-19 09:01 1628CBW、CWDE、CDQ、CWD: 扩展指令 ;CBW ... -
学 Win32 汇编[24] - 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD
2011-12-19 09:01 1451SHL、SHR、SAL、SAR: 移位指令 ;SHL( ... -
学 Win32 汇编[23] - 位测试与位扫描指令: BT、BTC、BTR、BTS、BSF、BSR
2011-12-19 09:00 2124BT、BTS、BTR、BTC: 位测试指令 ;BT(B ... -
学 Win32 汇编[22] - 逻辑运算指令: AND、OR、XOR、NOT、TEST
2011-12-14 13:23 1327AND: 逻辑与 ;该指令会置 CF=OF=0; 其结 ... -
学 Win32 汇编[21] - 传送指令: MOV、LEA、XCHG、XLATB、XLAT、MOVZX、MOVSX
2011-12-14 13:22 1110汇编指令的一般性要求: 1、两个操作数的尺寸必须一致; 2、操 ... -
学 Win32 汇编[20]: 洞察标志寄存器
2011-12-14 13:21 65515 14 13 12 11 10 9 8 7 6 ... -
学 Win32 汇编[19]: 查看二进制等相关函数
2011-12-14 13:20 600在 masm32.inc 中有这样几个函数的声明: by ... -
学 Win32 汇编[18]: 关于压栈(PUSH)与出栈(POP) 之二
2011-12-13 14:28 1017由于 "栈" 是由高到低使用的, 所以新压 ... -
学 Win32 汇编[17]: 关于压栈(PUSH)与出栈(POP) 之一
2011-12-13 14:27 1065记得刚学多线程的时候, 碰到一个结构: //Delphi ... -
学 Win32 汇编[16]: 常用寄存器的常规功能
2011-12-13 14:26 762通用寄存器 EAX ... -
学 Win32 汇编[15]: LOOP 与标号
2011-12-13 14:25 821Loop 是反复执行;从哪反复? 这要用到 "标号& ... -
学 Win32 汇编[14]: 使用中括号 []
2011-12-12 13:24 742[地址] 是取地址指向的内容: ; Test14_1.as ...
相关推荐
X86汇编指令集是计算机体系结构中不可或缺的一部分,特别是在32位和64位的x86架构处理器中。这篇文档详细列举了汇编指令,并为每条指令提供了注释说明。以下知识点涵盖了文档中提及的关键指令及其功能。 一、数据...
1. **常量 / 变量** 和 **变量 / 变量**:无优化空间时,使用`div`或`idiv`指令进行有符号或无符号除法。 2. **变量 / 常量**:对于无符号除以2的幂,可以使用右移`sar`进行数学优化,如向下取整、向上取整和向0取整...
- 除法:DIV、IDIV。 - 扩展:CBW、CWD。 - 调整指令:DAA、DAS。 3. **逻辑运算指令**:AND、OR、NOT、XOR、TEST。 4. **移位指令**:SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR。 5. **输入输出指令**:IN、OUT。...
- 解决方案:使用带符号的乘除指令IMUL和IDIV来处理坐标差值,确保即使差值为负也能正确绘制出三角形。 #### 主体程序代码详解 下面是一段具体的主体程序代码示例,用于展示顶点坐标值输入模块的部分实现逻辑: `...
### 汇编指令手册详解 #### 数据传输指令:数据的高效搬运工 汇编语言是一种低级程序设计语言,它直接对应计算机的硬件指令集,因此在进行精确控制和性能优化方面具有无可比拟的优势。数据传输指令是汇编语言中最...
- **IMUL指令:** 用于有符号整数的乘法。 - **实现步骤:** 1. 清零中间结果单元。 2. 如果乘数为零,则直接结束乘法运算。 3. 将乘数逻辑右移一位,判断是否为0,如果是则跳过加法步骤。 4. 中间结果加上被...
2. **算术运算**:通过`ADD`、`SUB`、`MUL`、`DIV`等指令进行基本数学运算。 3. **串处理**:利用`MOVSB`、`CMPSB`等指令进行字符串处理。 4. **控制转移**:通过`JMP`、`JE`、`JNE`等指令实现条件跳转。 5. **数据...
- **乘除指令**:MUL、IMUL、DIV、IDIV等。 #### 20. 几个END的差异 - **END**:程序结束指令。 - **ENDP**:过程结束指令。 - **ENDS**:段结束指令。 #### 21. Debug的各个命令和使用方法 - **W**:写入内存。 -...
### 微型计算机原理与8086/8088汇编语言指令解析 #### 概述 本文档详细介绍了8086/8088微型计算机系统的汇编语言指令集。这些指令是构成低级程序的基础,用于直接控制计算机硬件执行特定任务。下面将逐一解释附录B...
### 8086汇编语言指令集详解 #### 概述 在计算机科学领域,尤其是对于硬件层面的理解与操作,汇编语言是至关重要的工具之一。8086作为一款经典的16位微处理器,其汇编语言指令集不仅在当时具有划时代的意义,而且...
- **MUL/IMUL**: 乘法操作,分别用于无符号和有符号整数乘法。 - **DIV/IDIV**: 除法操作,分别用于无符号和有符号整数除法。 - **SHL/SAR**: 左移/算术右移,用于位操作,可以快速实现乘除运算。 - **AND/OR/XOR**:...
### 8088汇编语言基础与指令详解 8088处理器是Intel公司推出的一款8位外部数据总线的16位微处理器,它标志着个人计算机时代的开端。汇编语言作为直接与硬件交互的低级编程语言,对理解和控制8088处理器至关重要。...
乘法通常由MUL和IMUL指令实现,除法则由DIV和IDIV指令执行。这些指令在处理数值乘除时,不仅涉及操作数的大小,还需要考虑溢出和符号问题,因此状态标志位的更新也更为复杂。 除了基本的加减乘除,还有其他算术运算...
例如,在x86架构中,乘法指令MUL和IMUL,除法指令DIV和IDIV。这些指令处理二进制数值的乘除,可能涉及到溢出检查和其他计算细节。 3. **控制语句**:在硬件编程中,控制语句用于改变程序的执行流程,包括条件跳转...