当前位置: 代码迷 >> 汇编语言 >> 汇编一个小程序,有几句话看不懂求大神指导下,该怎么解决
  详细解决方案

汇编一个小程序,有几句话看不懂求大神指导下,该怎么解决

热度:226   发布时间:2016-05-02 04:51:37.0
汇编一个小程序,有几句话看不懂求大神指导下
1.编写完整程序,从键盘输入一个字符串STRING,同时,把字符串STRING中的‘&’字符用空格符替代。并显示出代替后的字符串及被代替字符的位置(串扫描).
程序
DATA SEGMENT
     STRING DB 8 DUP(?)
     ADDR DW?
DATA ENDS
CODE SEGMENT
     ASSUME ES:DATA,CS:CODE
START:
    MOV AX,DATA
    MOV ES,AX
    MOV CX,8
    MOV DI,0
AGAIN:
    MOV AH,01H
    INT 21H
    MOV STRING【DI】,AL
    INC DI
    LOOP AGAIN
    LEA DI,STRING
    MOV CX,8
    CLD
    MOV AL,26H
    REPNZ SCASB
    MOV AL,20H
    XCHG AL,STRING[DI-1]
    MOV BX,8
    SUB BX,CX
    MOV ADDR,BX。。。。。。。。。这句是求什么???
    MOV CX,8
    MOV SI,0
REST:
    MOV AL,STRING[SI]
    MOV DL,AL
    MOV AH,02H
    INT 21H
    INC SI
    LOOP REST
    ADD BX,30H。。。。。。。。。。。。。这句不懂!!!!!
    MOV DL,BL。。。。。。。。。。。。。。???
    MOV AH,02H
    INT 21H
    MOV AH,4CH
    INT 21H
CODE ENDS
END START
汇编 串扫描

------解决方案--------------------
>> MOV ADDR,BX。。。。。。。。。这句是求什么???
  BX 是那个字符在 STRING 内的位置吧,这句是将其保存在 ADDR 变量里。这样的话,上面的那个 XCHG 就有问题了,虽然你这里可能是对的,但却是有问题的,XCHG AL, [DI-1] 才对。

>> ADD BX,30H。。。。。。。。。。。。。这句不懂!!!!!
  BX 是位置,数值而已,显示的话,要转成相应的字符,比如 1->'1'(31h) 所以是加上 30H ;下面赋于 DL 是由于接着的显示字符功能调用要求待显示的字符是在 DL 里,int21h 的这个功能就是这么规定的。
  相关解决方案