在Masm for Windows软件环境8086架构下使用汇编语言编写“编程实现在字符串’God Bless You!’中查找字符’E’,如能够找到显示字符 串‘FOUNDED’,如果没有找到显示’NOT FOUND’”
时间: 2023-11-08 07:04:17 浏览: 27
下面是汇编语言实现的代码:
```
.model small
.stack 100h
.data
str1 db 'God Bless You!', 0
found db 'FOUNDED', 0
not_found db 'NOT FOUND', 0
search_char db 'E'
.code
main proc
mov ax, @data
mov ds, ax
mov si, offset str1 ; 将si指针指向字符串的第一个字符
mov al, search_char ; 将要查找的字符存储在al寄存器中
mov cx, 0 ; 用于记录查找到的次数
; 循环查找字符串中的字符
check_loop:
cmp byte ptr [si], 0 ; 若已经查找到字符串结束,跳出循环
je end_loop
cmp byte ptr [si], al ; 比较si指向的字符是否为要查找的字符
je found_char
inc si ; 指针指向下一个字符
jmp check_loop
found_char:
inc cx ; 查找次数+1
inc si ; 指针指向下一个字符
jmp check_loop
end_loop:
cmp cx, 0 ; 若查找次数为0,说明未找到要查找的字符
je not_found_output
mov dx, offset found ; 在字符串中找到了要查找的字符
jmp output_string
not_found_output:
mov dx, offset not_found ; 没有找到要查找的字符
output_string:
mov ah, 09h ; 调用DOS的输出字符串函数
int 21h
mov ah, 4ch ; 退出程序
int 21h
main endp
end main
```
代码说明:
- 首先定义了三个字符串,分别存储原字符串、查找到字符串时输出的字符串和未查找到字符串时输出的字符串。
- 在main过程中,将数据段的基地址存储在ax寄存器中,再将ax中的值移动到ds寄存器中,以便访问数据段中的数据。
- 将si指针指向字符串的第一个字符,将要查找的字符存储在al寄存器中,将查找次数cx初始化为0。
- 进入循环,比较当前si指向的字符是否为要查找的字符,若是,则查找次数+1;若不是,则继续向后查找。当si指针指向字符串结束时,跳出循环。
- 根据查找次数是否为0,输出相应的字符串。