由于快要期末考试了,我也准备开始本学期的专业课汇编语言的学习了hh(原谅我菜 orz)
汇编很强让我知道了计算机的cpu在进行工作时都是用加法来完成的
所以聪明的计算机工程师们将世间万物的计算通过数学方法来转换成加法运算,所以汇编语言让我了解了些许底层的知识同时我在网上搜索题目时,发现对于汇编详细解释的例子太过于少了导致比较烧腦,所以我在弄明白之后就想着写一篇关于汇编简单计算的小例子来展示汇编的魅力也可以供新生参考。
imul Y ;X*Y imul是带符号的乘法在这声明一下:由于原先的字长为16位这里也涉及到了字乘法16位*16位***一定是32位的,
所以用两个寄存器来分别存储该数据的高16位和低16位所谓的“高”“低”在我看来就是中间平分左边就是高右边就是低
mov bx,dx ;由于在16位与16位相乘的过程中,机器自动为用户把高16位分到DX的通用寄存器但是下面还需要用到高16位,
所以得挪地方来保存高16位寄存器下面的图片表达了这一点!!!
cwd 这句是把ax带符号扩展成dx,ax为什么这样做?先接着往下看……
add cx,ax ;将刚才扩展的双字保存在bx,cx中因为马上要用到ax、、我们一定要优先进行低16位的加法运算所以用add
adc bx,dx ;然后再把原先的高16位和刚拓展好的Z的高16位楿加但是此处是ADC说明要加上低16位的进位符如果低16位有进位就加上,没有进位加0
sub cx,540 ;这也如此因为16位二进制完全能保存540的大小所以只在低16位相减
峩们一直在努力加油!