8086汇编分别判断二维数组里的字符串是否是回文字符串,并中断显示
时间: 2023-12-19 20:04:42 浏览: 96
下面是判断二维数组里的字符串是否为回文字符串的8086汇编代码:
```
assume cs:code, ds:data
data segment
strs db 'level','abccba','1234','56789','121','$'
buf db 20 dup(0)
msg db ' is a palindrome.',13,10,'$'
msg2 db ' is not a palindrome.',13,10,'$'
data ends
code segment
start:
mov ax, data
mov ds, ax
; 将字符串复制到缓冲区中,并判断每一个字符串是否为回文字符串
mov bx, offset strs
mov cx, 0
mov si, offset buf
outer_loop:
; 将字符串复制到缓冲区中
mov di, si
mov al, [bx]
mov ah, al
cmp al, '$'
je end_of_strings
add bx, 1
mov cl, 0
rep movsb
; 反转缓冲区中的字符串
mov si, di
mov di, si+cx-1
mov cx, cx/2
std
rep movsb
cld
; 比较原字符串和反转后的字符串
mov si, di-cx
mov di, di-1
mov cx, cx
repe cmpsb
jne not_palindrome
; 是回文字符串
lea dx, msg
mov ah, 9
int 21h
jmp next_string
not_palindrome:
; 不是回文字符串
lea dx, msg2
mov ah, 9
int 21h
next_string:
add si, cx
add bx, 1
cmp byte ptr [bx], '$'
jne outer_loop
end_of_strings:
mov ah, 4ch
int 21h
code ends
end start
```
在这段代码中,我们首先将字符串复制到缓冲区中,然后使用双指针法将缓冲区中的每个字符串反转,最后比较原字符串和反转后的字符串是否相等,如果相等,则输出 " is a palindrome.",否则输出 " is not a palindrome."。最后程序退出。
阅读全文
相关推荐














