乔丹卡佛采访视频:强人帮忙解释下这段汇编代码~小弟拜谢了
来源:百度文库 编辑:高校问答 时间:2024/10/05 08:14:39
DSEG SEGMENT
STR DB ‘THIS IS A STRING WITH OR WITHOUT SUN’
KEYSTR DB ‘SUN’
NUM DW ?
DSEG ENDS
STACK SEGMENT PARA STACK 'STACK’
DW 256 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG, SS:STACK
START: MOV AX,DSEG
MOV DS,AX
MOV ES,AX
MOV AX,0
MOV DX,KEYSTR
LEA BX,STR
COMP: MOV DI,BX
LEA SI,KEYSTR
MOV CX,3
REPE CMPSB
JNZ G1
INC AX
G1: INC BX
DEC DX
JNZ COMP
MOV NUM,AX
MOV AX,4C00H
INT 21H
CODE ENDS
END START
对汇编一窍不通啊~~万望逐句解释...拜谢拜谢
STR DB ‘THIS IS A STRING WITH OR WITHOUT SUN’
KEYSTR DB ‘SUN’
NUM DW ?
DSEG ENDS
STACK SEGMENT PARA STACK 'STACK’
DW 256 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG, SS:STACK
START: MOV AX,DSEG
MOV DS,AX
MOV ES,AX
MOV AX,0
MOV DX,KEYSTR
LEA BX,STR
COMP: MOV DI,BX
LEA SI,KEYSTR
MOV CX,3
REPE CMPSB
JNZ G1
INC AX
G1: INC BX
DEC DX
JNZ COMP
MOV NUM,AX
MOV AX,4C00H
INT 21H
CODE ENDS
END START
对汇编一窍不通啊~~万望逐句解释...拜谢拜谢
DSEG SEGMENT 定义数据段
STR DB ‘THIS IS A STRING WITH OR WITHOUT SUN’ 定义元素STR
KEYSTR DB ‘SUN’定义元素KEYSTR
NUM DW ? 保留一个空间
DSEG ENDS
STACK SEGMENT PARA STACK 'STACK’ 定义堆栈段
DW 256 DUP(?) 设置堆栈空间
STACK ENDS
CODE SEGMENT 定义代码段
ASSUME CS:CODE,DS:DSEG, SS:STACK
START: MOV AX,DSEG 开始执行
MOV DS,AX 设置数据段寄存器
MOV ES,AX 设置附加段寄存器
MOV AX,0 AX置0
MOV DX,KEYSTR 字符串SUM入DX
LEA BX,STR STR地址存入BX
COMP: MOV DI,BX
LEA SI,KEYSTR
MOV CX,3 设置循环次数为3
REPE CMPSB 循环比较字符串,当cx=0时退出循环
JNZ G1 不为0则跳到g1段执行。
INC AX ax 加1
G1: INC BX bx加1
DEC DX dx减1
JNZ COMP 不为0继续比较
MOV NUM,AX 比较次数存入ax
MOV AX,4C00H 退出程序
INT 21H
CODE ENDS
END START
这个程序说白了也就是找sum在THIS IS A STRING WITH OR WITHOUT SUN中的位置,并显示比较的次数。我的解释不太规范也不太科学,毕竟好长时间没看书了。。。有什么问题大家指出来,谢谢!
没有问题,是对的!