| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 936 人关注过本帖
标题:谁能帮我解释一段代码
只看楼主 加入收藏
tottibuffon
Rank: 2
等 级:论坛游民
帖 子:105
专家分:20
注 册:2009-6-5
结帖率:83.87%
收藏
已结贴  问题点数:10 回复次数:5 
谁能帮我解释一段代码
程序代码:
这个事整段 代码,谁能帮我解释解释rotate和print2段的代码,越详细越好谢谢
;********************************************************************
datasg segment  para   'data'
mess1   db    'Enter keyword:','$'
mess2   db    'Enter sentence:','$'
;
stoknkeyword db     10
act1         db      ?
stokn1       db     10 dup(?)
;
stoknsenten  db     50
act2         db     ?
stokn2       db     50 dup(?)
;
mess3        db     'Match at location:','$'
mess4        db     'No match!',0dh,0ah,'$'
mess5        db     'H of the sentence.',0dh,0ah,'$'
mess7        db     0dh,0ah,'$'
flag         dw     0
datasg  ends              
;********************************************************************
codesg segment  para  'code'               
main  proc far
     assume cs:codesg,ds:datasg,es:datasg
start:
     mov ax,datasg
     mov ds,ax
     mov es,ax
;                              
     lea dx,mess1
     mov ah,09
     int 21h
     lea dx,stoknkeyword
     mov ah,0ah
     int 21h
     lea dx,mess7
     mov ah,09
     int 21h
loop1:
     lea dx,mess2
     mov ah,09                  
     int 21h
     lea dx,stoknsenten
     mov ah,0ah
     int 21h
     lea dx,mess7
     mov ah,09
     int 21h
;
     mov al,act1
     cmp al,act2
     jg print
     lea si,stokn1
     lea bx,stokn2
loop2:
     mov di,bx
     mov cl,act1     
     lea si,stokn1
     cld
     repz cmpsb
     jz next
     inc bx
     dec act2
     jnz loop2
     test flag,0ffffh
     jz print
     jmp loop1
print:
     lea dx,mess4
     mov ah,09
     int 21h
     jmp loop1
next:
     lea dx,mess3
     mov ah,09h
     int 21h
     mov flag,bx
     push bx
     lea dx,stokn2
     sub bx,dx
     inc bx
     push cx
     mov  ch,4
rotate:
     mov cl,4
     rol bx,cl
     mov al,bl
     and al,0fh
     add al,30h
     cmp al,3ah
     jl print2
     add al,7h
print2:
     mov dl,al
     mov ah,2
     int 21h
     inc bx
     dec ch
     jnz rotate   
     pop cx
     pop bx
     lea dx,mess5
     mov ah,09h
     int 21h
     inc bx
     dec act2
     jnz loop2
     jmp loop1
main endp
;--------------------------------------------------------------------
codesg ends
;********************************************************************
   end start
搜索更多相关主题的帖子: 代码 解释 
2010-04-24 22:43
tottibuffon
Rank: 2
等 级:论坛游民
帖 子:105
专家分:20
注 册:2009-6-5
收藏
得分:0 
  还有loop2段的
     test flag,0ffffh
     jz print
     jmp loop1
是来做什么的?
2010-04-24 22:45
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:10 
程序貌似比较混乱,或者是我头脑不清楚了
思路好像是:先各提示输入两个字符串,一个是“KEYWORD”,另一个是“SENTENCE”,然后进行字符的一一比较,找到两个字符串开始匹配的位置,然后进行输出的处理。
ROTATE子程序好像是将字符转换成16进制形式再输出;
LOOP2就是对两个字符串的匹配子程序了。
TEST FLAG,0FFFFH是测试标志位是否为真!FLAG就是SENTENCE串一一比较之后的位置,如果已经比较到了末尾,即BX为0了(MOV FLAG,BX),则为假。
2010-04-26 00:14
tottibuffon
Rank: 2
等 级:论坛游民
帖 子:105
专家分:20
注 册:2009-6-5
收藏
得分:0 
回复 3楼 ONEPROBLEM
flag它的值是怎么变化的?没看出来。。我一直以为flag一直是0,所以不理解为什么flag要和0FFFFH去TEST。。。是随着BX的后移它自动加1吗?还是说哪句编写让他的值加1了?
2010-04-26 12:37
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
next子程序中,不是有对flag操作的语句么?mov flag,bx
2010-04-26 13:45
tottibuffon
Rank: 2
等 级:论坛游民
帖 子:105
专家分:20
注 册:2009-6-5
收藏
得分:0 
回复 5楼 ONEPROBLEM
谢谢
2010-04-26 18:00
快速回复:谁能帮我解释一段代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028746 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved