用汇编语言编写字符串查找的程序,怎样编?急用!谢谢啦!

作者&投稿:示炒 (若有异议请与网页底部的电邮联系)
一个简单的汇编编程 题目: 查找匹配字符串~

data segment
word1 db 'macth!',0ah,0dh,'$'
word2 db 'no match!',0ah,0dh,'$'
buffer1 db ? ;存入关键字
buffer2 db 20h dup(?)
db 0
db 20h duo(?) ;存输入字符,大小可改
data ends
stack1 segment stack
db 200h dup(?)
stack1 ends
code segment
assume cs:code,ss:stack,ds:data
start: mov ax,data
mov ds,ax
mov ah,01h
int 21h
mov buffer1,al ;送关键字
mov ah,0ah
int 21h
mov si,02h
mov cl,buffer2+1 ;置循环值
lp1: mov dl,buffer1
cmp dl,al ;比较
icn si
jz disp1 ;匹配显示match
loop lp1 ;不匹配继续循环查找
mov dx,offset word2 ;显示no match
mov ah,09h
int 21h
disp1: mov dx,offset word1
mov ah ,09h
int 21h
mov ah,4ch
int 21h
code ends
end start

汇编语言无回显输入一串字符串,可以调用DOS功能中断INT 21H的07H功能。比如无回显输入一串字符串,以回车符结束,输入字符串最大长度200字符,示例程序如下:data segment
str db 201 dup (0dh)
data ends
code segment
assume cs:code,ds:data
main proc far
start:
mov ax,data
mov ds,ax
call input
mov ah,4ch
int 21h
ret
main endp
input proc near
lea si,str
mov cx,200
inpstr: mov ah,07h
int 21h
mov [si],a1
inc si
xor al,0dh
jz endinp
loop inpstr
endinp: ret
input endp
code ends
end start

该数据段数据段开始
S1 DB 0DH,0AH的字符串:$',S1,S2,S3字符串
S2 DB 0DH,0AH的CH:$ S3 DB 0DH
BR />,0AH,'string2:搜索$“
输入DB 50输入:输入字符串的长度不超过50
IN_R DB 0.50 DUP(0),第一个字节的存储长度的实际输入
存储输入字符串后面的代码(ASCII)
输出DB 50 DUP('$')删除字符串
db'HHHHHHHHH'
数据结束块段代码段结束的开始
ASSUME CS:CODE,DS:数据
START:MOV AX,DATA的
MOV DS,AX DS点的数据段
PUSH DS
POP ES DS,ES推
MOV DX,OFFSET(偏移)的S1
MOV AH,09
INT 21H输出S1的字符串,系统会提示用户输入字符串 MOV DX抵消输入
MOV AH,0AH
INT 21H输入字符串的格式保存到输入缓冲区,看到上面
MOV DX,OFFSET S2
MOV AH,09
INT 21H输出S2字符串,提示用户输入要删除字符
IN_R MOV CL,CL店的实际输入字符串的长度
MOV CH,CH = 0 MOV BX,的偏移IN_R的+1 BX点实际的字符串
MOV DI,OFFSET输入输出DI指向输出字符串
MOV AH,01 INT 21H
输入的字符你要删除,存放在AL
LOOP1:
MOV AH,[BX]

CMP AH,AL比较字符串的字符是否要删除字符相同
JE NO_COPY相同,执行删除
MOV [DI],AH不同的复制到输出字符串的字符
INC DI指针DI加
NO_COPY的:
INC BX的字符发送到输出字符串
LOOP LOOP1循环,知道到底
MOV DX,OFFSET S3
MOV AH,09
INT 21H的输出串S3 BR /> MOV DX,抵消了输出
MOV AH,09

输出删除字符串INT 21H MOV AH,4CH
INT 21H返回到DOS
CODE结束数据段的结束
END START

数据段数据段开始
S1 DB 0DH,0AH字符串:$',S1,S2,S3字符串

S2 DB 0DH,0AH的CH:$ S3 DB 0DH

BR /> 0AH,'string2:搜索“

输入DB 50输入:输入字符串的长度不超过50

IN_R DB 0.50 DUP(0),第一个字节的存储长度的实际输入

存储输入字符串后面的代码(ASCII)

输出DB 50 DUP('$')删除字符串

db'HHHHHHHHH,“

数据块段代码段的开始年底

ASSUME CS:CODE,DS:数据

START:MOV AX,DATA

MOV DS,AX DS点的数据段

PUSH DS

POP,推ES DS,ES

MOV DX,OFFSET(偏移)S1

MOV AH,09

INT 21H输出字符串S1,系统将提示用户输入一个字符串MOV DX取消输入

MOV AH,0AH

INT 21H输入字符串的格式保存到输入缓冲区,看到上面

MOV DX,偏移S2

MOV AH,09

INT输出S2字符串的21H,提示用户你要删除的字符

IN_R MOV CL,CL店的输入字符串的长度

MOV CH,CH = 0 MOV BX ,偏移IN_R +1 BX点的实际字符串

偏移量输入和输出MOV DI,DI点输出字符串

MOV AH,01 INT 21H

输入你要删除的字符,存储在AL

LOOP1:

MOV AH,[BX]

CMP AH,AL字符串中的字符,如果你要删除的字符相同

JE NO_COPY,执行“删除”

MOV [DI] AH不同的字符复制到输出字符串

INC DI指针DI加拿大

NO_COPY的了:

INC BX的字符发送到输出字符串

LOOP LOOP1循环,知道到底

MOV DX,OFFSET S3

09

INT 21H的输出字符串S3 BR / MOV DX,偏移输出MOV AH, BR /> MOV AH,09

输出到删除的字符串INT 21H MOV AH,4CH的

INT 21H返回到DOS
的数据段结束代码结束 BR /> END START。


如何用汇编语言实现字符串的输出。
int main(){ float r,h,s;scanf("%f",&r);scanf("%f",&h);s=2*3.1415926*r*r+2*3.1415926*r*h printf("表面积是%f\\n",s);return 0;}

汇编语言 输入字符串,不知道字符个数所以定义了DB ?,但后来直接把?mov...
在汇编语言中,使用DB(Define Byte)指令来为一个或多个字节的数据分配内存空间,该指令后面紧跟着的是需要存储的字节数据。在输入字符串时,可以使用DB指令来定义一个字符数组,并在程序中循环读取输入字符,直到读到回车符为止。当需要遍历字符串时,可以使用MOV指令将字符数组的起始地址存储到CL寄存器中...

用8086汇编语言编写一个输入字符串的程序
9INT 21HJMP LOOP1LOOP2:; 判断 ESC 键MOV DL, ALCMP DL, 1BHJE EXIT; 显示字符MOV DL, ALMOV AH, 02HINT 21HJMP LOOP1EXIT:MOV AH, 4CHINT 21HCSEGENDSEND BEGIN

求汇编语言代码!在一个字符串中查找某个字符第一次出现的位置_百度知 ...
0 ; 以0结尾的字符串,即类似c语言的字符串 CHAR1 DB 'X' DATA ENDS CODE SEGMENT ASSUME CS:CODE START: MOV AX,SEG DATA MOV DS,AX MOV ES,AX LEA DI,STR1 MOV AL,BYTE PTR DS:...

用汇编语言编译一个程序\\从键盘输入一个字符串将其每个字符的ASCII码...
str2 db ‘Two’, ’$’str3 db ‘Three’, ’$’str4 db ‘four’, ’$’str5 db ‘five’, ’$’tab dw str1,str2,str3,str4,str5 data ends ssg segment stack dw 256 dup(?)ssg ends code segment para assume cs:code,ss:ssg,ds:data main proc...

用汇编语言编写一个程序
print MACRO para ;定义一个宏,这样输出字符串的时候,可以省些事儿 lea dx,para mov ah,9 int 21h ENDM data segment msg1 db '请用拼音输入姓名学号[格式为:XinMing,XuHao$'buffer db 50,52 dup(0)' ;为什么是52?因为你可以输入50个,而系统要用1个字节,在后面放...

用汇编语言输出一个字符串,在屏幕的下一行显示出来
string db 'what are you doing?','$'mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h ;前面的是输出回车换行符(2号功能调用)mov dx,offset string mov ah,9 int 21h ;输入字符串(9号功能调用)

试编写一个汇编语言程序,要求比较两字符串STRING1和STRI
str4 db 'not match$';此处输入数据段代码 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,ES:DATAS START:MOV AX,DATAS MOV DS,AX MOV EX,AX ;此处输入代码段代码 MOV CX,4 MOV DI,OFFSET STR1 MOV SI,OFFSET STR2 REPZ COMSB JZ LAB1 JNZ LAB2 LAB1:mov dx,offset str3 mov ...

用汇编语言编程
;字符串大写字母转换为小写 ;提示输入字符串;;输入任意字符串string,点击Enter 结束输入;;将字符串string 中的大写字母转换为小写字母输出,;按回车键结束。DATA SEGMENT BUF1 DB 'Please input random string,end with Enter key:$';提示输入 BUF2 DB 0,0,0,0,0,0,0,0,0,0,0DH;存放输入...

汇编语言,输入一个长度为n的字符串,将大写字母转化为小写
MOV AH, 0AH ;输入字符串 INT 21H MOV CL, STR + 1 MOV CH, 0 CMP CX, 0 JNZ CAL JMP EXIT CAL:MOV STR, 13 MOV STR + 1, 10 MOV AL, 'z' + 1 MOV BX, 0 LOP:CMP BYTE PTR STR[BX + 2], 'A'JB NEXT1 CMP BYTE PTR ...

鞍山市18599962560: 用汇编语言编写字符串查找的程序,怎样编?急用! -
蒋雨安来: 数据段数据段开始S1 DB 0DH,0AH字符串:$',S1,S2,S3字符串 S2 DB 0DH,0AH的CH:$ S3 DB 0DH BR /> 0AH,'string2:搜索“输入DB 50输入:输入字符串的长度不超过50 IN_R DB 0.50 DUP(0),第一个字节的存储长度的实际输入存...

鞍山市18599962560: 编写汇编程序,在字符串中查找关键字符 -
蒋雨安来: #include <stdio.h>#include <string.h> void main() { char sh[20]; int i; gets(sh); for( i=0;i<20;i++)if(sh[i]!='@') ; else break; if(i<19) printf("有字符 @\n"); else printf("没有字符 @\n"); }

鞍山市18599962560: 哥们,你再看看用汇编语言编写“在字符串中查找输入字符 ”,也就是字符串匹配,多谢!!! -
蒋雨安来: #include "stdio.h" int strchr(char s[],char ch) { for(int i=0;s[i];i++) if(ch==s[i]) return i; return -1; } void main() { char str[81]; char c; gets(str); fflush(stdin); c=getchar(); printf("%d\n",strchr(str,c)); }

鞍山市18599962560: 汇编中查找关键字的程序编写
蒋雨安来: 用cmp指令实现: dseg segment string db 'abcdec$ffds' cnt dw $-string fd db "FOUND$" ufd db "UNFOUND$" dseg ends cseg segment assume cs:cseg,ds:dseg begin: mov ax,dseg mov ds,ax lea si,string mov al,'$' mov cx,cnt next: cmp al,[...

鞍山市18599962560: 怎么用汇编语言编程:在一串字符串中找"%",如果有输出Yes,如果没有输出No? -
蒋雨安来: 首先把字符串的首地址送到一个寄存器里,然后就开始比较是不是和'%'一样,如果一样就跳到输出'YES',没有的话,就把地址向后移一位,继续比较,直到找到或比较完为止

鞍山市18599962560: 用汇编语言编写 在某串中查找字符a 找到显示该字符 否则输出NO FOUND! -
蒋雨安来: SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: PUSH DS MOV AX, 0000H MOV DS, AX MOV AX, OFFSET MIR6 ;取中断入口地址 MOV SI, 0038H ;中断矢量地址 MOV [SI], AX ...

鞍山市18599962560: 汇编语言 如何从字符串找到一个指定的字符
蒋雨安来: next: add dx,30h mov ah,09h int 21h 这里要显示的应该是dx的内容,或者说dl+30h后的字符, 你应该mov ah,02h,这是显示一个字符 如果是mov ah,09h显示的是DS:DX表示的内存首地址的,以'$'结束的字符串

鞍山市18599962560: 汇编语言:编写程序,在字符串STRING1中查找子串STR2,且 -
蒋雨安来: ;在MASM 6.15下编译通过 data segment msg1 db 'Input String1:$' msg2 db 'Input String2:$' msg3 db 'Found str2 in str1 at:$' msg4 db 'str2 not in str1.',0dh,0ah,'str1+str2=$' str1 db 255;输入缓冲区大小 db ?;实际输入的字符数 db 255 dup(?...

鞍山市18599962560: 求汇编语言字符串的查找与替换代码 -
蒋雨安来: DOS 21H AH = 09H中断$ $之前的字符只能输出,所以如果你要输出输出功能都可以编写一个字符串结束时也相当简单 例如,如结束ASCII代码为0 集str作为字符串的第一个地址LEA SI,STRMOV AH,02H_at_ _at_:MOV DL,[SI]CMP升,0JZ下INT 21HINC SIJMP @ B 下:(输出串码)

鞍山市18599962560: 汇编,查找匹配的字符串 -
蒋雨安来: //KMP(D.E.Knuth---J.H.Morris---V.R.Pratt)算法,用于从一个字符串中查找子串#include #include #include //求失效函数int *FailFunction(short *str){int i, j, len;int *f;len = strlen((char *)str)/2;f = (int *)malloc(len*sizeof(int));if(f == NULL){...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网