searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

汇编指令中有符号数和无符号数的处理

2024-05-21 02:36:13
8
0
在 8 位的字节运算中,无符号数的范围是 00000000~11111111,即十进制的 0~255;在 16 位的字运算中,无符号数的范围是 0000000000000000~1111111111111111,即十进制的 0~65535; 在将来要讲到的 32 位运算中,无符号数的范围是 000000000000000000000000 ~ 11111111111111111111111111111111,即十进制的 0~4294967295。
 
有符号数:
对于正数,和无符号数没区别,只是表示的范围小了一半。对于负数,用0减去对应的数即可。
00000000-10000000=10000000(十进制数 128)  所以 -128 = 10000000
00000000-11111111=00000001(十进制数 1) 所以 -1 = 11111111
10000000~11111111 这个范围内的有符号数,对应着十进制数-128~-1
 
关于有符号数的负数处理,对于乘法和除法指令要特殊处理:
neg指令,用于获取一个有符号数的相反数,如果 AL 中的内容是 00001000(十进 制数 8),执行 neg al 后,AL 中的内容变为 11111000(十进制数-8);如果 AL 中的内容为 11000100 (十进制数-60),执行 neg al 后,AL 中的内容为 00111100(十进制数 60)。
cbw和cwd指令,扩充有符号数的位数,如果 AL 中的内容是 00001000(十进 制数 8),执行 neg al 后,AL 中的内容变为 11111000(十进制数-8);如果 AL 中的内容为 11000100 (十进制数-60),执行 neg al 后,AL 中的内容为 00111100(十进制数 60)。
idiv指令,用于处理有符号数的除法,注意当除法溢出时,需要扩充被除数的位数,将16位负数-3904扩充到32位一定要用cwd指令扩充,会自动根据符号位正确扩充数据的位数。否则可能将负数 0xf0c0扩充为 0x0000f0c0而不是0xfffff0c0。
 
0条评论
0 / 1000
徐****骥
2文章数
0粉丝数
徐****骥
2 文章 | 0 粉丝
徐****骥
2文章数
0粉丝数
徐****骥
2 文章 | 0 粉丝
原创

汇编指令中有符号数和无符号数的处理

2024-05-21 02:36:13
8
0
在 8 位的字节运算中,无符号数的范围是 00000000~11111111,即十进制的 0~255;在 16 位的字运算中,无符号数的范围是 0000000000000000~1111111111111111,即十进制的 0~65535; 在将来要讲到的 32 位运算中,无符号数的范围是 000000000000000000000000 ~ 11111111111111111111111111111111,即十进制的 0~4294967295。
 
有符号数:
对于正数,和无符号数没区别,只是表示的范围小了一半。对于负数,用0减去对应的数即可。
00000000-10000000=10000000(十进制数 128)  所以 -128 = 10000000
00000000-11111111=00000001(十进制数 1) 所以 -1 = 11111111
10000000~11111111 这个范围内的有符号数,对应着十进制数-128~-1
 
关于有符号数的负数处理,对于乘法和除法指令要特殊处理:
neg指令,用于获取一个有符号数的相反数,如果 AL 中的内容是 00001000(十进 制数 8),执行 neg al 后,AL 中的内容变为 11111000(十进制数-8);如果 AL 中的内容为 11000100 (十进制数-60),执行 neg al 后,AL 中的内容为 00111100(十进制数 60)。
cbw和cwd指令,扩充有符号数的位数,如果 AL 中的内容是 00001000(十进 制数 8),执行 neg al 后,AL 中的内容变为 11111000(十进制数-8);如果 AL 中的内容为 11000100 (十进制数-60),执行 neg al 后,AL 中的内容为 00111100(十进制数 60)。
idiv指令,用于处理有符号数的除法,注意当除法溢出时,需要扩充被除数的位数,将16位负数-3904扩充到32位一定要用cwd指令扩充,会自动根据符号位正确扩充数据的位数。否则可能将负数 0xf0c0扩充为 0x0000f0c0而不是0xfffff0c0。
 
文章来自个人专栏
windows
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0