汇编(3)

本文详细介绍了汇编语言中的sub指令、neg求补操作,以及如何区分和处理无符号和有符号数,包括idiv除法指令和符号扩展的示例。
摘要由CSDN通过智能技术生成

sub指令

格式:sub r/m,r/m/imm
源操作数和目的操作数不能同时为内存地址

sub al,35
sub dx,ax
sub dx,[0x2002]
sub byte [0x2002],37
sub [0x2002],al

neg求补指令

格式:neg r/m

neg al
neg di
neg byte [0x2002]

作用:连同符号位取反,再加1
1100 0100(-60)-> 0011 1100(60)
0000 1000(8)-> 1111 1000(8)

区分无符号数和有符号数

大多数指令既适用于有符号数,也适用于无符号数
特例:无符号数乘法指令:mul
有符号数乘法指令:imul
无符号数除法指令:div
有符号数除法指令:idiv

有符号数除法指令idiv

;如果在指令中指定的是8位寄存器或8位操作数的内存地址,
意味着被除数在寄存器ax里
;相除后,商在寄存器al里,余数在寄存器ah里
idiv bh
idiv byte [0x2002]
;如果在指令中指定的是16位寄存器或16位操作数的内存地址,
意味着被除数是32位的,低16位在ax里,高16位在dx里
;相除后,商在寄存器ax里,余数在寄存器dx里
idiv bx
idiv word [0x2002]

;如果在指令中指定的是32位寄存器或32位操作数的内存地址,
意味着被除数是64位的,低32位在eax里,高32位在edx里
;相除后,商在寄存器eax里,余数在寄存器edx里
idiv ebx
idiv dword [0x2002]

有符号数的符号扩展指令

+7
0000 0111                                0x07
0000 0000 0000 0111                      0x0007
0000 0000 0000 0000 0000 0000 0000 0111  0x00000007
-3
1111 1101                                0xFD
1111 1111 1111 1101                      0xFFFD
1111 1111 1111 1111 1111 1111 1111 1101  0xFFFFFFFD

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木林_森林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值