Masm汇编将已知数组向右移动一位
时间: 2023-06-12 17:05:29 浏览: 169
下面是一份 MASM 汇编代码,可以将一个已知数组向右移动一位:
```
; 定义数组
data segment
array db 1, 2, 3, 4, 5
data ends
; 代码段
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
; 数组长度
mov cx, 5
; 将数组最后一位保存
mov al, array[cx-1]
; 从后向前遍历数组
mov si, cx-2
mov di, cx-1
loop1:
; 将当前位的值移到下一位
mov bl, array[si]
mov array[di], bl
; 继续向前遍历
dec si
dec di
cmp si, -1
jge loop1
; 将保存的最后一位赋值给第一位
mov array[0], al
; 输出移动后的数组
mov cx, 5
mov si, 0
loop2:
mov dl, array[si]
mov ah, 02h
add dl, 30h
int 21h
inc si
cmp si, cx
jl loop2
; 程序结束
mov ax, 4c00h
int 21h
code ends
end start
```
这段代码中,我们首先定义了一个包含五个元素的数组 `array`。然后,在程序开始处,我们使用 `mov` 指令将 `DS` 寄存器设置为数据段的地址,这样程序就可以访问我们定义的数组。
接着,我们使用 `mov` 指令将数组最后一位保存在 `AL` 寄存器中。然后,我们使用 `mov` 指令将 `SI` 和 `DI` 寄存器设置为数组倒数第二个元素和最后一个元素的地址,然后使用 `loop` 指令从后向前遍历数组,将每个元素的值移到下一个元素中。
最后,我们使用 `mov` 指令将保存的最后一位赋值给数组的第一位,然后输出移动后的数组。最后,我们使用 `mov` 指令将 `AX` 寄存器设置为 `4C00H`,然后使用 `int 21h` 指令结束程序。
阅读全文