鱼C论坛

 找回密码
 立即注册
查看: 1477|回复: 10

求换个方法..太蛋疼了

[复制链接]
发表于 2013-11-5 20:41:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
判断STR2是不是STR1的子串

datasg segment
        STR1                db 32, ?, 32 dup (?)
        STR2                db 16, ?, 16 dup (?)
        INFO1                db 'Input Long Str:$'
        INFO2                db 'Input Short Str:$'
        INFO3                db 'yes$'
        INFO4                db 'no$'
        INFO5                db 'error$'
        INDEX                dw 2
datasg ends
;==============================================================================================================
codesg segment
assume cs:codesg, ds:datasg

start:                                mov ax, seg STR1
                                        mov ds, ax
                                       
                                        mov dx, offset INFO1                                        ;显示提示信息1
                                        mov ah, 9
                                        int 21h
                                        mov dx, offset STR1
                                        call GetStr                                                        ;输入长字符串
                                        call NewLine                                                        ;换行
                                       
                                        mov dx, offset INFO2                                        ;显示提示信息2
                                        mov ah, 9
                                        int 21h
                                        mov dx, offset STR2
                                        call GetStr                                                        ;输入短字符串
                                        call NewLine                                                        ;换行
                                       
                                        ;取2个字符串长度(cl) = 长字符串长度, (dl) = 短字符串长度
                                        mov bh, STR1 + 1                                                ;取得长字符串长度
                                        mov bl, STR2 + 1                                                ;取得短字符串长度
                                       
                                        ;合法验证
                                        mov dx, offset INFO5                                        ;初始化为错误提示
                                        or bh, bh
                                        jz ok1
                                        or bl, bl
                                        jz ok1
                                        cmp bl, bh
                                        ja ok1
                                       
                                        mov ah, 0                                                        ;初始化为no状态
                                        mov si, 1
                                        xor ch, ch
bj_next1:                                cmp bh, bl
                                        jb bj_next3
                                        dec bh
                                        mov di, si
                                        inc si
                                        mov INDEX, 1
                                        mov cl, bl
bj_next2:                                inc di
                                        inc INDEX
                                        push si
                                        mov si, INDEX
                                        mov al, STR2[si]
                                        pop si
                                        cmp al, STR1[di]
                                        jnz bj_next1
                                        loop bj_next2
                                        mov ah, 1
                                       
bj_next3:                                mov dx, offset INFO4
                                        or ah, ah
                                        jz ok1
                                        mov dx, offset INFO3
                                       
ok1:                                        mov ah, 9
                                        int 21h

ok:                                        xor al, al
                                        mov ah, 4ch
                                        int 21h
                                       
;名称:GetStr
;功能:接收字符串
;入口参数:(dx) = 缓冲区首地址
;出口参数:无
GetStr proc near
       
                                        push ax
       
                                        mov ah, 0ah
                                        int 21h
                                       
                                        pop ax
       
                                        ret

GetStr endp

;名称:NewLine
;功能:换行
;入口参数:无
;出口参数:无
NewLine proc near
       
                                        push ax
                                        push dx
                                       
                                        mov ah, 2
                                        mov dl, 0dh
                                        int 21h
                                        mov dl, 0ah
                                        int 21h
                                       
                                        pop dx
                                        pop ax
       
                                        ret

NewLine endp

codesg ends
;==============================================================================================================
end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-11-7 01:33:00 | 显示全部楼层
:mad:表示看惯了高级语言 来看汇编有点不习惯了 得找个时间复习下了,都忘了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-14 22:43:23 | 显示全部楼层
我也是忘的快差不多了,但又得拿起来!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-24 09:08:15 | 显示全部楼层
我想把bcd变量中2个字节的bcd码转化为4个字节的bcd码,请懂的帮忙
code        segment
        assume cs:code
bcd db         12h,34h
bcd2         db 0,0,0,0
start:         mov al,bcd

接下来怎么编?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-24 09:08:46 | 显示全部楼层

我想把bcd变量中2个字节的bcd码转化为4个字节的bcd码,请懂的帮忙
code        segment
        assume cs:code
bcd db         12h,34h
bcd2         db 0,0,0,0
start:         mov al,bcd

接下来怎么编?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-24 09:09:28 | 显示全部楼层
我想把bcd变量中2个字节的bcd码转化为4个字节的bcd码,请懂的帮忙
code        segment
        assume cs:code
bcd db         12h,34h
bcd2         db 0,0,0,0
start:         mov al,bcd

接下来怎么编?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-24 10:10:29 | 显示全部楼层
{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:},,,,,,,,,,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-24 10:11:20 | 显示全部楼层
激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-24 10:14:05 | 显示全部楼层
激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-24 10:14:44 | 显示全部楼层
激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-24 12:50:11 | 显示全部楼层
帮顶。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 08:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表