汇编——三个字符串比较

汇编——比较两个字符串 ;编写程序、比较两个字符串所含字符是否相等,如果相等在屏幕上显示“Y",反之显示”N" 1、MOV ES,AX 必须要加,因为 使用了CMPSB,这个要用到源地址 2、MOV CX,LEN1 ;将长度存入CX 中 CMP CX,LEN2 ;比较字符串长度 这段必须要加在CMPSB之前,不加或者不使用CX都会导致程序不能正常运行,为啥我也不知道。 ;编写程序、比较两个字符串所含字符是否相等,如果相等在屏幕上显示“Y",反之显示”N" DATAS SEGMENT BUF1 DB 20,?,20 DUP('$ 阅读详情

写的比较累赘。。。

data segment

msg1 DB "Please input first string:",'$'
string1 DB 100,0,100 dup('?')

msg2 DB "Please input second string:",'$'
string2 DB 100,0,100 dup('?') 

msg3 DB "Please input third string:",'$'
string3 DB 100,0,100 dup('?') 

msg4 db 0ah,0dh
result DW '?','$'
Data ends

Stack segment para stack
	db20h dup(0)
Stack ends

code segment
Assume Cs:code,Ss:stack,ds:Data
Start:mov ax,data
	mov ds,ax
	mov es,ax
	;处理第1个字符串 
	lea dx,msg1
	mov ah,09h
	int 21h
	
	lea dx,string1
	mov ah,0ah
	int 21h
	
	xor bx,bx
	
	lea dx,msg4
	mov ah,09h
	int 21h
	;处理第二个字符串 
	lea dx,msg2
	mov ah,09h
	int 21h
	
	lea dx,string2
	mov ah,0ah
	int 21h  
	
	lea dx,msg4
	mov ah,09h
	int 21h
	;处理第三个字符串
	lea dx,msg2
	mov ah,09h
	int 21h
	
	lea dx,string3
	mov ah,0ah
	int 21h     
	
	lea dx,msg4
	mov ah,09h
	int 21h
	;第一个与第二个开始比较  
	mov bl,string1+1
	cmp bl,string2+1
	ja lop1
	jb lop2
	jmp lop3

lop1:mov cl,string2+1
	jmp lop3

lop2:mov cl,string1+1
	jmp lop3

lop3:mov cl,bl
	cld
	lea di,string2+2
	lea si,string1+2
	repz cmpsb
	ja mat1
	jb mat2

mat1: ;1比2大的情况  ,2与3再比较
	;嵌套    
	mov bl,string2+1
    cmp bl,string3+1
	ja lop4
	jb lop5
	jmp lop6

    lop4:mov cl,string3+1
	    jmp lop6

    lop5:mov cl,string2+1
	    jmp lop6

    lop6:mov cl,bl
	    cld
	    lea di,string3+2
	    lea si,string2+2
	    repz cmpsb
	    ja mat4
	    jb mat5
	    ;嵌套第2层  
	    
	    mat4: 
	        ;------1比2大,2比3大,ASCII码排序是1>2>3
	        mov result,'3' 
	        lea dx,result
	        mov ah,09h
	        int 21h  
	        mov result,'2' 
	        lea dx,result
    	    mov ah,09h
    	    int 21h
    	    mov result,'1' 
    	    lea dx,result
    	    mov ah,09h
    	    int 21h
            jmp exit 
            
        mat5:
            ;1比2大,2比3小,1和3还需比较
             ;第一个与第三个开始比较  
        	mov bl,string1+1
        	cmp bl,string3+1
        	ja lop7
        	jb lop8
        	jmp lop9
        
            lop7:mov cl,string3+1
            	jmp lop9
            
            lop8:mov cl,string1+1
            	jmp lop9
            
            lop9:mov cl,bl
            	cld
            	lea di,string3+2
            	lea si,string1+2
            	repz cmpsb
            	;ja mat7
            	jb mat8 
            	;------1比2大,2比3小,1比3大
                ;ASCII码排序是1>3>2 
            ;mat7:
                mov result,'3' 
    	        lea dx,result
    	        mov ah,09h
    	        int 21h  
    	        mov result,'1' 
    	        lea dx,result
        	    mov ah,09h
        	    int 21h
        	    mov result,'2' 
        	    lea dx,result
        	    mov ah,09h
        	    int 21h
                jmp exit
            mat8:
                ;------1比2大,2比3小,1比3小
                ;ASCII码排序是3>1>2
                mov result,'2' 
    	        lea dx,result
    	        mov ah,09h
    	        int 21h  
    	        mov result,'1' 
    	        lea dx,result
        	    mov ah,09h
        	    int 21h
        	    mov result,'3' 
        	    lea dx,result
        	    mov ah,09h
        	    int 21h 
                jmp exit
	    ;嵌套第2层
	 ;嵌套

mat2:   
    ;1比2小的情况。1再与3比较
    mov bl,string1+1
    cmp bl,string3+1
	ja lop10
	jb lop11
	jmp lop12

    lop10:mov cl,string3+1
	    jmp lop12

    lop11:mov cl,string1+1
	    jmp lop12

    lop12:mov cl,bl
	    cld
	    lea di,string3+2
	    lea si,string1+2
	    repz cmpsb
	    ja mat10
	    jb mat11  
	        mat10:
	        ;------1比3大的情况
	        ;ASCII码排序是2>1>3
                mov result,'2' 
    	        lea dx,result
    	        mov ah,09h
    	        int 21h  
    	        mov result,'3' 
    	        lea dx,result
        	    mov ah,09h
        	    int 21h
        	    mov result,'1' 
        	    lea dx,result
        	    mov ah,09h
        	    int 21h
        	    jmp exit  
        	mat11:
    	    ;1比2小,1比3小,2和3再比较
        	    mov bl,string2+1
                cmp bl,string3+1
            	ja lop13
            	jb lop14
            	jmp lop15
            
                lop13:mov cl,string3+1
            	    jmp lop15
            
                lop14:mov cl,string2+1
            	    jmp lop15
            
                lop15:mov cl,bl
            	    cld
            	    lea di,string3+2
            	    lea si,string2+2
            	    repz cmpsb
            	    ja mat13
            	    jb mat14  
            	mat13:
                    ;-----1比2小,1比3小,2比3大
                    ;ASCII码排序是2>3>1
                    mov result,'1' 
        	        lea dx,result
        	        mov ah,09h
        	        int 21h  
        	        mov result,'3' 
        	        lea dx,result
            	    mov ah,09h
            	    int 21h
            	    mov result,'2' 
            	    lea dx,result
            	    mov ah,09h
            	    int 21h   
            	    jmp exit
            	mat14:
            	    ;-----1比2小,1比3小,2比3小
            	    ;ASCII码排序是3>2>1
            	    mov result,'1' 
        	        lea dx,result
        	        mov ah,09h
        	        int 21h  
        	        mov result,'2' 
        	        lea dx,result
            	    mov ah,09h
            	    int 21h
            	    mov result,'3' 
            	    lea dx,result
            	    mov ah,09h
            	    int 21h 
            	    jmp exit 
mat3:mov result,'0'

exit:mov ah,4ch
int 21h
code ends
end start

 

比较三个字符串的大小(c语言版) 比较三个字符串的大小(c语言版),程序运行流畅,没有语法错误,简单易行 立即下载

相关推荐

AI算力网络与通信领域流量分析:优化策略探讨_副本

今天的AI就像一个"超级吃货",每天要"吃"掉海量数据、“消耗"巨量算力——训练一个千亿参数的大模型,可能需要上万块GPU同时工作数周,其间产生的数据传输量足以填满数百万个1TB硬盘。这些GPU和计算节点通过网络连接形成"AI算力网络”,而数据在节点间的流动就是"通信流量"。如果把算力比作AI的"肌肉",那流量就是"血液"——血液不通畅,肌肉再强也使不上劲。

AI天才研究院 1201

汇编语言指令集

汇编语言指令集  一、数据传输指令      1. 通用数据传送指令.MOV     (MOVe) 传送字或字节.MOVS    (MOVe String)     串传送指令MOVSX    先符号扩展,再传送.MOVZX    先零扩展,再传送.PUSH     把字压入堆栈.POP      把字弹出堆栈.PUSHA   

wutong_login的专栏 1312

深信服上网行为管理设备登录方法、恢复出厂、恢复控制台密码

1.初识设备 1.1 设备外观 1.2 软件版本 2.如何登录设备 首次拿到AC/SG设备时,可以通过以下方法登录设备控制台 SANGFOR AC/SG设备,各网口默认的出厂IP为: eth0(LAN):10.251.251.251/24 , eth1(DMZ)10.252.252.252/24 1、使用一根交叉线连接设备和电脑 (1) 如果电脑连接的是设备的eth0口,需先在电脑上配...

✍千里之行,始于足下 ^,^ 5万+

x86汇编指令学习

地址传送指令lea 有效地址传送指令 使用实例 lea dx, string 将偏移地址存储到dx中

huizhang0110 1176

嵌入式学习(29)-ASM330LHH驱动程序

ASM330LHH是一种系统级封装器件,具有3D数字加速度计和3D数字陀螺仪,扩展温度范围上限为+105 °C,适用于汽车非安全领域的应用。ASM330LHH 的满量程加速范围为±2 g、±4 g、±8 g 和 ±16 g,角速度范围扩展至 ±125 dps、±250 dps、±500 dps、±1000 dps、± 2000 dps 和 ±4000 dps,适合各种汽车应用。

剑藏锋的博客 1177

嵌入式SPI总线抽象设计:跨平台驱动与分层解耦实践

SPI(串行外设接口)是嵌入式系统中应用最广泛的同步串行通信协议,其核心价值在于高吞吐、低开销与硬件简洁性。其工作原理基于主从架构、全双工/半双工时序及片选(CS)控制,依赖CPOL/CPHA组合定义四种标准模式。在工程实践中,SPI常面临硬件资源受限、多外设共用总线、MCU平台迁移等挑战,导致驱动复用率低、维护成本高。通过结构体+函数指针实现的分层抽象——将物理总线、协议适配与设备驱动解耦,可显著提升代码可移植性与扩展性。该方法天然支持硬件SPI与GPIO模拟SPI双模式切换,并已在STM32等主流MCU

weixin_42601134的博客 61

汇编语言实验 9 根据材料编程

该实验是让我们通过改变显存中的数据,让屏幕商显示三种不同颜色的 welcome to masm! 具体步骤: 字体两个属性用两个字节表示,第一个字节来表示字体的ascll,第二个字节来表示字体的颜色,我们找到显存空间,把这两个属性附上,即可完成实验 程序: assume cs:code,ds:data,ss:stack data segment db 'welcome to masm!' db 02h,24h,71h data ends stack segment dw 8 dup(0) stack

yangzijiangac的博客 1223

程序员的自我修养

一个好的程序员的自我修养需要从不同角度出发,工作能力是一个方面,对自身的定位和了解也是一个方面,程序员的工作能力修养包括需求理解、功能设计、沟通确认、代码规范、成果验证、代码重构优化等,通过自我剖析来对自身进行定位并了解自身的优缺点,如去除劣根性、端正意识形态与态度、提升自己的核心竞争力等。 自我剖析 一个成功的人,必须要先了解自己,只有了解自己是什么样的人,了解自身有哪些优缺点,了解自己更合适做什么工作,知道自己做什么才能发挥出自身的优势,这样才能使自己在工作中发光发热,在职业生涯的道路上走的更远。

数通畅联 1681

8086汇编语言:连续输入数字直到非数字类型时输出。

详细解答,仔细分析!并对所能接受的最大数进行了分析讨论!

坤舆湖畔的万某某的博客 1173

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

专栏总目录,文中介绍了UDS协议相关的基础知识和一些术语,给出了详细介绍6大类26种服务的跳转目录。

车载系统攻城狮 9万+

【ODX介绍】-4.2-UDS诊断$27服务在ODX-D诊断描述文件中如何描述

共25页精讲:附ODX-D XML:UDS $27 Security服务0x61和0x62 Sub-Function,其它Sub-Function可参照其格式。 目录 1 ODX-D描述一个UDS $27 Security服务Sub-Function的结构 2 标签DIAG-SERVICE描述的内容 2.1 举例:DIAG-SERVICE的XML描述 3 标签REQUEST描述的内容 3.1 举例:REQUEST的XML描述 4 标签POS-RESPONSE描述的内容 4.1 举例:PO..

「汽车电子助手」的博客 1122

汇编基本代码与debug的使用

汇编基本代码与debug的使用

人工智能方向,计算机视觉(https://github.com/chenshunpeng) 2251

Simulink中搭建一个包含PID控制的压电陶瓷快反镜模型

这个模型只是一个基本框架,你需要根据实际的系统参数和要求进行调整和优化。希望这些步骤能帮助你在Simulink中搭建所需的模型。

AI的内部世界的博客 474

C标准库——字符串函数反汇编分析

本文介绍了几种常见的字符串处理函数:strlen;strcpy;strcmp等函数的反汇编逆向分析,可以帮助你在逆向过程中快速识别相关函数!

Tandy12356_的博客 1081

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c 汇编语言小程序100例,汇编语言小程序例子.doc

编写统计AX中1、0个数的源程序。1的个数存入CH,0的个数存入CL。CODE SEGMENTASSUME CS:CODESTART: MOV CX, 0MOV DX,17AA1: SUB DX, 1JZ AA3SHL AX, 1JNC AA2INC CHJMP AA1AA2: INC CLJMP AA1AA3: MOV AH,4CHINT 21HCODE ...

weixin_35565522的博客 2472

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

微型计算机原理上机实验改错,北京理工大学微机原理汇编语言上机实验题

实验一请在数据段中定义两个数,要求编写程序分别计算出这两个数的和、差、积、商,并用Debug 的相关命令查询计算结果。(略)实验二内存自TABLE开始的连续16个单元中存放着0-15的平方值,查表求DATA中任意数X(0≤X ≤15)的平方值,并将结果放在RESULT中。DATA1 SEGMENTTABLE DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,...

weixin_39928801的博客 3046

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

汇编实验:从键盘上输入一串字符到输入缓冲区,找出其中的大写字母和小写字母,并分别统计它们的个数,结果放到变量 num1 和 num2 中,要求在屏幕输出显示所有字母及变量 num1 和 num2 的值

1.给出三个有符号数,编写一个比较相等关系的程序: (1) 如果这三个数都不相等,则显示 0; (2) 如果这三个数中有两个数相等,则显示 1; (3) 如果这三个数都相等,则显示 2; 利用Dos1号功能实现输入三个字符进行比较(初级版) datas segment D DB 3 DUP(0) D1 DB ? D2 DB ? D3 DB ? MESSAGE Db 'please input three number:',13,10,'$' datas ends stacks segment stack

weixin_44627672的博客 2521

汇编作业

编程题A-3:设有三个字节变量Ⅹ、Y、Z,试找出X、Y有符号数中较大者送入Z中,编写程序。 DATA SEGMENT X DB 080H ;NEG Y DB 7FH ;POS Z DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,X CMP AL,Y ;X COMPARE WITH Y

m0_48909881的博客 1177

汇编实验七 数据处理及直接定址表

会利用条件转移指令循环和控制结构解决问题 会使用数据的直接定址表解决问题

qq_62411974的博客 340

汇编程序:比较两个字符串是否相等

本实验将通过编写一个简单的汇编程序来比较两个字符串是否相等。程序将定义两个字符串S1和S2,比较它们是否完全匹配,并根据比较结果输出“Match!”或“No match!

m0_74950751的博客 3649

汇编语言之字符串的比较和查找

汇编语言之字符串的比较和查找 基础知识 串比较指令涉及两个串,目的串地址为ES:[DI],源串地址为DS:[SI]。操作如下: 1)字节(CMPSB)操作:(ES:DI)-(DS:SI),DI±1,SI±1 2)字(CMPSW)操作:(ES:DI)-(DS:SI),DI±2,SI±2。 本条串操作指令把两个串的对应位置的字节或字相减,不保存结果,知识根据结果设置标志位。该指令与前缀RE

Pengwill's Blog 2万+

汇编实验三:三个有符号数比较大小

汇编实验三问题源码 问题 给出三个有符号数,编写一个比较相等关系的程序: (1) 如果这三个数都不相等,则显示0; (2) 如果这三个数中有两个数相等,则显示1; (3) 如果这三个数都相等,则显示2; 源码 DATAS SEGMENT D DB 3 DUP(?); 将数据首先保存到D数组 D1 DW ? D2 DW ? D3 DW ? D4 DB 3...

antRain的博客 7431

汇编语言任务1—字符串比较

任务1字符串比较 问题 如下所示的数据区中给出两个字符串,请比较它们的大小,并将结果记录在result处:相等(E)、前大后小(A)、前小后大(B) data segment str1 db ‘Yan Tai’,0 str2 db ‘Yan Cheng’,0 result db 0 data ends 请在程序中加入足量的注释 报告内容:带注释的源程序及运行结果如下 DOSBox下的运行结果 源程序 内联代码片。 在DOSBox中的运行情况 assume cs:code,ds:data data s

Sixgod2694932856的博客 2627

【汇编】 字符串比较

汇编语言中对于字符串的比较: 1. 把两字符串的首地址分别送入 SI 和 DI寄存器 2. 把样板字符串长度送入CX 寄存器 3. 将方向标志位清零,使用CLD指令,并把 串指针设置为自动增量 4.使用自动比较指令 REPZ CMPSB 比较两字符串 下面的示例程序指定样板字符串,比较字符串通过系统功能调用输入: 其中对于字符串缓冲区的设置为: ; You may customize this and other start-up templates; ; The locaweixi

大西瓜不甜的博客 5675

汇编语言上机实验:编写一个程序,要求比较数组ARRAY中的三个16位补码数

汇编语言上机实验2 5.4 试编写一个程序,要求比较数组ARRAY中的三个16位补码数,并根据比较结果在终端上显示如下信息: (1) 如果三个数都不相等则显示0; (2) 如果三个数有两个相等则显示1; (3) 如果三个数都相等则显示2. data segment array1 db "1000000000000000" ;初始化字符串1 array2 db "1000000000000...

qq_40511157的博客 3609

比较字符串是否相等-汇编语言

比较两个字符串 BUF1 和 BUF 所含的字符是否相同,相同则 AL 返回 0,不同 AL 返回 1 最后的结果为: 第一行为BUF1的输入,第二行为BUF1的输出,第三行为BUF2的输入,第四行为BUF2的输出,第五行为判断的结果。 DATAS SEGMENT BUF1 DB 20,?,20 DUP('$') LEN1 EQU $-BUF1 ;获取字符串长度 BUF2 DB 20,?...

Fiverya的博客 6697
上一篇: 汇编——输出空行
下一篇: 汇编——用宏求平均值
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值