回 帖 发 新 帖 刷新版面

主题:关于字符串中的字频问题,达人一定要给解释下呀,再拜

小弟这几天写了第一个汇编程序,可是没办法生成.obj文件,求教达人
题目是让求STRBUF中STRING出现的频率,他给出了数据段:
DSEG         SEGMENT PARA 'DATA'    
STRBUF        DB 'ASASAASASSASSAASASAS'
COUNT        EQU $-STRBUF
STRING        DB 'AS'
MESSG        DB "THE NUMBER OF 'AS' IS : "
NUM        DB ?    
        DB 0AH,0DH,'$'
DSEG         ENDS

我补的堆栈段和代码段:
;********************************************************
STACKSG     SEGMENT STACK 'STACK'
    DW    32    DUP(?)
STACKSG     ENDS
;********************************************************
CODESG SEGMENT
    MAIN PROC FAR
    ASSUME    CS:CODESG, DS:DSEG, SS:STACKSG
    MOV    AX, DSEG
    MOV    DS, AX

    LEA    DX, MESSG
    MOV    AH, 9
    INT     21H
    
    MOV    NUM, 0
    MOV     CX, COUNT-1   ;防止SI移到最后一个字节取字时溢出
    CLD
    LEA     SI, STRBUF
NEXT:
    LODSW                  ;把SI目前指向位置的字(即SI和SI+1)放入AX
    CMP    AX, STRING    ;AX-STRING
    JNZ    STEP          ;根据上一句的结果判断分支
    [color=FF0000]INC     NUM[/color]
    LEA    SI, SI-1      ;由于LODSW一次使SI移2位,所以要移回1位
    LOOP     NEXT
STEP:
    LEA    SI, SI        ;不做任何事情的(只是为了跳过红字部分)

    MOV     DL, NUM       
    MOV    AH, 2
    INT     21H

    MOV    AX, 4C00H
    INT     21H
MAIN     ENDP
CODESG     ENDS
    END    MAIN

回复列表 (共1个回复)

沙发

ss没有给值
MOV AX,STACKSG
MOV SS,AX

我来回复

您尚未登录,请登录后再回复。点此登录或注册