在Masm for Windows 集成实验环境 2015下使用汇编语言编写“编程实现在字符串’God Bless You!’中查找字符’E’,如能够找到显示字符 串‘FOUNDED’,如果没有找到显示’NOT FOUND’”
时间: 2023-11-10 14:06:36 浏览: 202
下面是使用 MASM for Windows 集成实验环境 2015 编写的汇编程序:
```assembly
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
str db 'God Bless You!',0
found db 'FOUNDED',0
not_found db 'NOT FOUND',0
.code
start:
mov ecx, lengthof str ; 获取字符串 str 的长度
lea esi, str ; 将字符串 str 的地址存储到 esi 寄存器中
mov al, 'E' ; 要查找的字符
mov ebx, 0 ; 计数器清零
mov edx, 0 ; 标志位清零
cld ; 清方向标志,从左向右查找
search_loop:
lodsb ; 从 esi 指向的地址读取一个字节到 al 中,并且 esi 加上 1
cmp al, 0 ; 判断是否到达字符串结尾
je end_search
cmp al, 'E' ; 判断当前字符是否是要查找的字符
jne continue_search
inc ebx ; 如果找到了要查找的字符,则计数器加一
mov edx, 1 ; 设置标志位为 1
jmp continue_search
continue_search:
loop search_loop ; 循环查找
end_search:
cmp edx, 1 ; 判断是否找到了要查找的字符
je found_label
invoke MessageBox, NULL, addr not_found, addr str, MB_OK
jmp exit_program
found_label:
invoke MessageBox, NULL, addr found, addr str, MB_OK
jmp exit_program
exit_program:
invoke ExitProcess, NULL
end start
```
在程序中,我们定义了三个字符串,分别是要查找的字符串、找到时要显示的字符串和没找到时要显示的字符串。然后我们使用 `lodsb` 指令从字符串 `str` 中逐一读取每个字符,并与要查找的字符进行比较。如果找到了要查找的字符,则计数器 `ebx` 加一,并且设置标志位 `edx` 为 1。最后根据标志位 `edx` 的值来判断是否找到了要查找的字符,如果找到了,则显示找到时要显示的字符串,否则显示没找到时要显示的字符串。
阅读全文