8086设计一个双重 循环判断回文字符串
时间: 2023-06-21 20:16:28 浏览: 70
下面是使用 8086 汇编语言编写的双重循环判断回文字符串的示例代码:
```
.model small
.stack 100h
.data
msg db 'Enter a string: $'
msg1 db 'The string is a palindrome.$'
msg2 db 'The string is not a palindrome.$'
str db 80h dup('$')
.code
main proc
mov ax, @data
mov ds, ax
; 输出提示信息
lea dx, msg
mov ah, 09h
int 21h
; 读取字符串
lea dx, str
mov ah, 0Ah
int 21h
; 计算字符串长度
mov si, 0
mov cx, 0
mov cl, [str+1]
dec cx
; 双重循环判断回文字符串
mov di, cx
shr cx, 1
mov bx, 0
cmp cx, bx
jle palindrome
mov bx, 1
outer_loop:
mov al, [str+si+2]
mov ah, [str+di+2]
cmp al, ah
jne not_palindrome
inc si
dec di
cmp si, di
jg palindrome
inner_loop:
mov al, [str+si+2]
mov ah, [str+di+2]
cmp al, ah
jne not_palindrome
inc si
dec di
cmp si, di
jle inner_loop
palindrome:
; 输出回文字符串信息
lea dx, msg1
mov ah, 09h
int 21h
jmp exit_program
not_palindrome:
; 输出非回文字符串信息
lea dx, msg2
mov ah, 09h
int 21h
exit_program:
mov ah, 4ch
int 21h
main endp
end main
```
该程序首先提示用户输入一个字符串,然后使用 `int 21h` 中断读取字符串。接着,程序使用双重循环判断该字符串是否为回文字符串,如果是,输出回文字符串信息,否则输出非回文字符串信息。最后,程序使用 `int 21h` 中断退出程序。
阅读全文