汇编语言基本格式
汇编语言与机器语言是一对一的,而高级语言与机器语言是一对多的
int Y;
int X = ( Y + 4 ) * 3;
mov eax,Y ;Y 送入 EAX 寄存器
add eax,4 ;EAX 寄存器内容加 4
mov ebx,3 ;3 送入 EBX 寄存器
imul ebx ;EAX 与 EBX 相乘
mov x,eax ;EAX 的值送入 X
寄存器是cpu中被命名的存储位置,用于保存操作的中间结果
二进制转十进制(加权位计数法)
D表示二进制的数字(0,1)
列:00001001=( 1 X 23 ) + ( 1 X 20 ) = 9
十六进制转十进制
列:3BA4=(3 x 163)+(11 x 162)+(10 x 161)+( 4 x 160)=15268
二进制相加
0+0=0 | 0+1=1 |
---|---|
1+0=1 | 1+1=10 |
列:00101001+01011010=10000011
字节的度量单位
1 千字节(kilobyte)等于 210,或 1024 个字节。
1 兆字节(megabyte)(1MB)等于 220,或 1 048 576 字节。
1 吉字节(gigabyte)(1GB)等于 230 即 10243,或 1 073 741 824 字节。
1 太字节(terabyte)(1TB)等于 240,即 10244,或 1 099 511 627 776 字节。
1 拍字节(petabyte)等于 250,或 1 125 899 906 842 624 字节。
1 艾字节(exabyte)等于 260,或 1 152 921 504 606 846 976 字节。
1 泽字节(zettabyte)等于 270 个字节。
1 尧字节(yottabyte)等于 280 个字节。
补码的应用及运算方式
一个数的补码是其加法逆元
1011001010011100
msb为高位
lsb为低位
最高位为1表示负为0表示正
二进制补码计算:
00000001取反=11111110 +1=11111111(补码)
逆元方式-1 11111111-1=11111110取反=00000001
16进制补码计算:
6A3D取反(每位数减15)=95C2 +1=95C3
逆元方式95C3取反加1=6A3C+1=6A3D
有符号的二进制数转化十进制
最高位是1该数是补码,所以进行求补得正数然后转化十进制再加上符号
11111000 取反=00000111 +1=00001000=8 为负=-8
-8的二进制表示就是将8的二进制数进行取反+1
00001000 取反=11110111 +1=11111000(上一步相反的过程)
汇编boolean表达式(与或非)
非(NOT):标记为 ¬ 或 ~ 或 '
与(AND):标记为^或 ·
或(OR):标记为 ∨ 或 +
¬X=NOT X | ¬X∨Y=(NOT X) OR Y |
---|---|
X^Y=X AND Y | ¬(X^Y)=NOT (X AND Y) |
X∨Y=X OR Y | X^¬Y=X AND (NOT Y) |