移位多个双字
任务:创建一个宏,使用SHRD和SHLD指令,将一个32位整数数组向任意方向移动可变位数。同时,编写程序对宏进行测试,把同一个数组向两个方向移动并显示结果。假设数组的存储模式为小端模式。示例宏声明如下:
mShiftDoublewords MACRO arrayName, direction, numberofBits
Parameters:
arrayName Name of the array
direction Right (R) or Left (L)
numberOfBits Number of bit positions to shift
具体看带注释的代码吧~~
TITLE Hello World!
option casemap:none ;大小写敏感
includelib ucrt.lib ;引入静态数据链接库,相当于#include <stdio.h>
includelib legacy_stdio_definitions.lib
INCLUDELIB kernel32.lib ;ExitProcess
.model flat,stdcall ;flat:存储模式(平坦内存模式)
;stdcall:语言类型(从右向左压栈)
printf PROTO C : dword,:vararg ;声明需要使用的函数头,函数不由被调用者清栈,而是由调用者负责清栈
ExitProcess PROTO, ;exit program
dwExitCode:DWORD;return code
CAL MACRO arrayName, direction, numberofBits ;宏指令,传入三个参数&