用汇编语言写一条代码:从键盘中分别输入两个字符串 ,并比较其包含的字符是否相同,相同显示“Match”,不相同则显示“No Match”
时间: 2024-10-24 16:17:10 浏览: 48
汇编语言基础教程.pdf
在汇编语言中编写这个程序会涉及到一些基本的输入输出以及字符串处理操作。这里我将以x86架构下的MASM为例,提供一个简单的示例。请注意,由于汇编语言的具体细节可能会因操作系统和平台的不同而有所差异,下面的代码假设在命令行环境下,并且使用了INT 21H中断服务来获取用户输入。
```assembly
section .data
prompt1 db 'Enter the first string: ',0
prompt2 db 'Enter the second string: ',0
match_msg db 'Match',0Ah,'$',0
no_match_msg db 'No Match',0Ah,'$',0
section .bss
str1 resb 255 dup(0) ; Reserve space for input strings
str2 resb 255 dup(0)
section .text
global _start
_start:
; Prompt for and read first string
mov ah, 0Ah
lea dx, prompt1
int 21h
mov si, offset str1
sub si, str1
int 21h
; Prompt for and read second string
mov ah, 0Ah
lea dx, prompt2
int 21h
mov di, offset str2
sub di, str2
int 21h
; Compare the strings
mov cx, 255 ; Assume maximum length of a string is 255 characters
xor bl, bl ; Clear the result flag (bl = 0 if strings are equal)
compare_loop:
lodsb ; Load the next character from each string into AL
cmp al, [si] ; Compare the characters
jne strings_not_equal ; If not equal, jump to exit
inc si
inc di
loop compare_loop ; Decrement CX and continue until both pointers end
; Strings are equal, display "Match"
jmp print_match
strings_not_equal:
; Strings are not equal, display "No Match"
print_match:
lea dx, match_msg
mov ah, 9
int 21h
jmp exit
no_match_msg:
lea dx, no_match_msg
; Continue with displaying "No Match"...
exit:
; Exit program
mov eax, 1
xor ebx, ebx
int 0x80
```
这段代码首先提示用户输入两个字符串,然后逐个字符比较,如果所有字符都相等,则认为字符串匹配,反之则不匹配。注意这只是一个基础示例,实际应用中可能需要考虑错误处理和边界情况。
阅读全文