一个由7个元素组成的整数数组,已经存放在主存的连续存储单元中,数组的起始地址为AS。例如:AS{31h,36h,33h,32h,38h,37h,35h}1. 编程实现:将数组AS中的元素向右循环移动一个位置,例如移位后变成{35h,31h,36h,33h,32h,38h,37h}2. 编程实现:将AS中最大元素和最小元素分别存于Max和Min中3. 将字符串AS中的内容复制到target中,并显示输出,以上三个任务要求均用汇编语言实现并且可以在masm软件上运行
时间: 2024-02-12 12:10:03 浏览: 118
下面是三个问题的汇编代码实现,注释中有详细的解释说明。
1. 将数组AS中的元素向右循环移动一个位置
```
.model small
.stack 100h
.data
AS db 31h, 36h, 33h, 32h, 38h, 37h, 35h
.code
main proc
mov ax, @data
mov ds, ax
mov cl, 1 ; 循环右移1位
mov al, [AS + 6] ; 保存最后一个元素
mov ch, [AS] ; 保存第一个元素
mov si, 1 ; 循环计数器
mov bx, offset AS ; 将数组地址存入bx中
add bx, 1 ; bx指向第二个元素
mov cx, 6 ; 循环计数器,6次即可
next:
mov dl, [bx] ; 将要移动的元素存入dl
mov [bx - 1], dl ; 将元素往前移动一个位置
inc bx ; 指向下一个元素
inc si ; 计数器加1
loop next ; 循环6次
mov [bx - 1], ch ; 将第一个元素移到最后一个位置
mov [AS], al ; 将最后一个元素移到第一个位置
; 输出移位后的数组元素
mov bx, offset AS
mov cx, 7
mov ah, 02h ; 用int 21h的02h功能输出字符
next2:
mov dl, [bx]
int 21h
inc bx
loop next2
mov ah, 4ch
int 21h
main endp
end main
```
2. 将AS中最大元素和最小元素分别存于Max和Min中
```
.model small
.stack 100h
.data
AS db 31h, 36h, 33h, 32h, 38h, 37h, 35h
Max db ?
Min db ?
.code
main proc
mov ax, @data
mov ds, ax
; 找出最大值和最小值
mov bl, [AS] ; 将第一个元素存储到bl中
mov bh, [AS] ; 将第一个元素存储到bh中
mov si, 1 ; 循环计数器
mov cx, 6 ; 循环6次即可
next:
mov al, [AS + si]
cmp al, bl ; 比较当前元素和最小值
jb update_min ; 如果当前元素小于最小值,更新最小值
cmp al, bh ; 比较当前元素和最大值
ja update_max ; 如果当前元素大于最大值,更新最大值
inc si ; 计数器加1
loop next ; 循环6次
; 更新最小值
update_min:
mov bl, al
jmp next
; 更新最大值
update_max:
mov bh, al
jmp next
mov Max, bh ; 将最大值存储到Max中
mov Min, bl ; 将最小值存储到Min中
; 输出Max和Min的值
mov dl, Max
add dl, 30h ; 将数字转换为字符
mov ah, 02h ; 用int 21h的02h功能输出字符
int 21h
mov dl, Min
add dl, 30h ; 将数字转换为字符
mov ah, 02h ; 用int 21h的02h功能输出字符
int 21h
mov ah, 4ch
int 21h
main endp
end main
```
3. 将字符串AS中的内容复制到target中,并显示输出
```
.model small
.stack 100h
.data
AS db 'Hello, world!', 0
target db 14 dup(0)
.code
main proc
mov ax, @data
mov ds, ax
; 复制AS中的内容到target中
mov si, offset AS
mov di, offset target
mov cl, 13 ; 字符串长度为13
next:
mov al, [si]
mov [di], al
inc si
inc di
loop next
; 输出target中的内容
mov ah, 09h ; 用int 21h的09h功能输出字符串
mov dx, offset target
int 21h
mov ah, 4ch
int 21h
main endp
end main
```
阅读全文