汇编语言Assembly Language

想念wangfeng老师,他将深奥的汇编语言解析的是那么透彻明白,身为学生的我真的受益良多。

字符        十六进制ASCII

0~9             30h-39h
A~Z            41h-5ah
a~z             61h-7ah

逻辑运算:

与 AND &

或 OR |

非 NOT !

异或 XOR

and 操作符 &
i = 0 & 1 ;// i is 0
i = 1 & 1 ;// i is 1
i = 0 & 0 ;// 0
i = 1 & 0 ;// 0

or 操作符 |
i = 0 | 1 ;// i is 1
i = 1 | 1 ;// i is 1
i = 0 | 0 ;// 0
i = 1 | 0 ;// 1

xor 异或操作符(相等取0,不等取1)
0 xor 1 ; 1
1 xor 1 ; 0
0 xor 0 ; 0
1 xor 0 ; 1

 与&操作,用0与数字是取0

或|操作,  用1或数字是取1

XOR,  异或相等取0,不等取1 。例如XOR AX,AX ;将AX置零

Assembly中的逻辑运算指令:

AND

OR

XOR

TEST

NOT

还有移位

SHL......

WF老师说计算机最擅长的是逻辑运算!

 原码,补码,反码。

计算机中用补码表示数。

===================================================================================================================================

问题1:10/2今天一个人问我,定义一个变量要给它分配内存,如果一个数直接就用了,那是不是也要给他分配内存,这个数放到哪儿去了?

我听了之后感觉确实,没仔细想过,这倒是让我想起了assembly汇编里面的立即数寻址。MOV AX,0AH

比如java中:

int a = 10;

int b = a / 5;

System.out.println(b);

我用C语言做了个例子,然后设置了一个断点,进入调试查看到汇编如下:

83:       int a = 10;
00401288   mov         dword ptr [ebp-4],0Ah
84:       int b = a/5;
0040128F   mov         eax,dword ptr [ebp-4]
00401292   cdq
00401293   mov         ecx,5                     ;5这个数被放进cpu里面的寄存器ecx里面了
00401298   idiv        eax,ecx
0040129A   mov         dword ptr [ebp-8],eax
85:       printf("%d",b);

当然java虚拟机里面的情况我就不太清楚了。

上面出现了一个CDQ指令,该指令的意义:CDQ 是一个让很多初学者感到困惑的指令. 它大多出现在除法运算之前. 它实际的作用只是把EDX的所有位都设成EAX最高位的值. 也就是说,当EAX <80000000, EDX 00000000; 当EAX >= 80000000, EDX 则为FFFFFFFF).

===================================================================================================================================

高级语言中的位运算:

Java:

Java 位运算符 (bitwise operators )

Java 定义的位运算直接对整数类型的位进行操作,这些整数类型包括long,int,hort,char,and byte 。表4-2 列出了位运算: 

运算符结果元运算
~按位取反NOT1
&按位与(AND)2
|按位或(OR)2
^按位异或(XOR)2
>>右移2
>>>右移,左边空出的位以0填充 ;无符号右移2
<<左移2
&=按位与赋值2
|=按位或赋值2
^=按位异或赋值2
>>=右移赋值2
>>>=右移赋值,左边空出的位以0填充 ;无符号左移2
<<=左移赋值2


 


【2022.05.08】之前有一个aogosoft汇编小站,经常去看一看,但是后来去看,发现关闭了。还有一个叫罗聪的程序员自己建了个网站,不过是讲自己的学习经历和经验的,首页一个人对着电脑,不过那个人的头是个牛头,这是说这个人是个大牛吧,哈哈哈。 在之前还有一个xieebajinzhi的,后来好像也关闭了。记得后来遇见一本非常好的windows汇编的书,作者是罗云彬,自己后来买了第四版,真的非常给力,在windows环境下,通过汇编调用windows的api进行编程,配合推荐的ide做软件很给力,而且性能优秀,当时在aogosoft汇编小站看到一个人用windows平台汇编实现了俄罗斯方块,代码只有93kb,逆天啊,佩服,佩服!当时还经常去看雪论坛,一个很有名的网站,每年出一个精华辑,那些过去的时光,还挺美好,现在已经在用linux平台了……


 


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值