汇编实验
- 说是实验,实际就是写一下书上的题罢了,对应标号的basis部分,下面直接上问题和代码
- 关于64位编程,之后会专门更相关的博客,目前是32位编程
整数数组求和
L2循环的方法我是想仿照C的写法写的
1 | .386 |
注意为了节省位置,下面的都不再添加程序的头尾内容,只有.data和.code
复制字符串
需要注意的是,无法直接内存复制过去,需要转经寄存器,逐位复制即可
1 | .data |
数组操作
1 | .data |
- mov edi, OFFSET intarray这句话的目的是方便我调试的时候看到数组位置,在内存中找到,观察结果是否正确
- 数组反向我只想到了这个方法,有空借鉴一下网上的方法,目前还待优化,奇数次会进行一次没有意义的循环(自己和自己交换一下)
斐波那契数列求和
编写汇编程序,计算斐波那契数列前7项的和
1 | .data |
- 没啥困难的,我们每次加一个数,算出下一个数,重复7次就行
附录
-
调试方法:
打下断点后打开调试,在菜单栏调试中选择窗口,再选寄存器,内存,在寄存器的窗口出右击,可以控制显示什么,目前用到的可以调出来cpu标志位 -
对应
书上的 | 别名 | 别名 |
---|---|---|
溢出标志OF(Over flow flag) | OV(1) | NV(0) |
方向标志DF(Direction flag) | DN(1) | UP(0) |
中断标志IF(Interrupt flag) | EI(1) | DI(0) |
符号标志SF(Sign flag) | NG(1) | PL(0) |
零标志ZF(Zero flag) | ZR(1) | NZ(0) |
辅助标志AF(Auxiliary carry flag) | AC(1) | NA(0) |
奇偶标志PF(Parity flag) | PE(1) | PO(0) |
进位标志CF(Carry flag) | CY(1) | NC(0) |
- 图示