首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2013-07-04 
汇编一个小程序,有几句话看不懂求大神指导下1.编写完整程序,从键盘输入一个字符串STRING,同时,把字符串STR

汇编一个小程序,有几句话看不懂求大神指导下
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 的这个功能就是这么规定的。



这些问题,将最后的 exe 程序用 debug 走下,看看那些指令前后相关项的内容,其实是很容易明白的。

热点排行