若有一个整数a(2 byte),怎样求其中的低字节
答案:2 悬赏:40 手机版
解决时间 2021-01-30 08:03
- 提问者网友:沉默菋噵
- 2021-01-29 09:00
若有一个整数a(2 byte),怎样求其中的低字节
最佳答案
- 五星知识达人网友:一秋
- 2021-01-29 09:28
汇编语言如下:
; 定义两个整数
a db ?
b db ?
;计算两个整数的相异数位
main proc argc:DWORD,argv:DWORD
xor eax,eax
mov al,a
xor ecx,ecx
mov cl,b
xor eax,ecx
push eax
call bitlen
add esp,4
; 此后eax中保存有相异位的个数
main endp
;计算一个数有多少位是1
bitlen proc num:DWORD
xor ecx,ecx
mov eax,num
beginchk:
test eax,eax
jz endchk
push eax
and eax,01h
jz nextchk:
inc ecx
nextchk:
pop eax
shr eax,1
jmp beginchk
endchk:
mov eax,ecx
bitlen endp
C的话那更简单了:
int main(int argc, char *argv[])
{
unsigned char a = ??? , b = ???? ;
unsigned int n = bitlen(a^b);
/////////////////////////////////
}
unsigned int bitlen(unsigned int num)
{
unsigned int n = 0;
for(; num != 0; num>>=1)
{
if( num & 0x01 ) ++n;
}
return n;
}
; 定义两个整数
a db ?
b db ?
;计算两个整数的相异数位
main proc argc:DWORD,argv:DWORD
xor eax,eax
mov al,a
xor ecx,ecx
mov cl,b
xor eax,ecx
push eax
call bitlen
add esp,4
; 此后eax中保存有相异位的个数
main endp
;计算一个数有多少位是1
bitlen proc num:DWORD
xor ecx,ecx
mov eax,num
beginchk:
test eax,eax
jz endchk
push eax
and eax,01h
jz nextchk:
inc ecx
nextchk:
pop eax
shr eax,1
jmp beginchk
endchk:
mov eax,ecx
bitlen endp
C的话那更简单了:
int main(int argc, char *argv[])
{
unsigned char a = ??? , b = ???? ;
unsigned int n = bitlen(a^b);
/////////////////////////////////
}
unsigned int bitlen(unsigned int num)
{
unsigned int n = 0;
for(; num != 0; num>>=1)
{
if( num & 0x01 ) ++n;
}
return n;
}
全部回答
- 1楼网友:梦中风几里
- 2021-01-29 10:50
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯