永发信息网

汇编程序,请教问题

答案:1  悬赏:0  手机版
解决时间 2021-05-18 21:58

|------------ | 每个大矩形的前面连个小矩形分别表示缓冲区的前两个字节,懂汇编的都知道这两个个字节的用途。

现在目的是把字符串B中的A串用C来替换(A,C不等长,三个字符串需从键盘输入),我的思路是这样的:1.现在B中查找A所在的位置,2,此时DI已指向B2开头(因为REPZ CMPSB指令),将B2暂时移到A区中,然后把C串移到B中原A的位置(即B1末尾),3.(将DI后退一格,以便将C末尾的字符串结束符覆盖掉)把B2添加到B中的C后面,4.输出替换操作后的B串,下面是我写的代码,有问题但是我找不出来,(可能是执行REPZ指令前CX没有设置好,但是这个我不懂)请高手指点:

DATA SEGMENT

BUFFERA DB 32
DB 0
DB 32 DUP(0)
BUFFERB DB 81
DB 0
DB 81 DUP(0)
BUFFERC DB 32
DB 0
DB 32 DUP(0)
PROMPTSTRINGA DB 'input A string:',0AH,0DH,'$'
PROMPTSTRINGB DB 'input B string:',0AH,0DH,'$'
PROMPTSTRINGC DB 'input c string to replace A string:',0AH,0DH,'$'
PROMPTSTRINGENTER DB 0AH,0DH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA

START:
;input A B string
MOV DX,DATA
MOV DS,DX

MOV DX,OFFSET PROMPTSTRINGA
MOV AH,09H
INT 21H
MOV DX,SEG BUFFERA
MOV DS,DX
MOV DX,OFFSET BUFFERA
MOV AH,0AH
INT 21H

MOV DX,OFFSET PROMPTSTRINGENTER
MOV AH,09H
INT 21H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV DX,OFFSET PROMPTSTRINGB
MOV AH,09H
INT 21H
MOV DX,SEG BUFFERB
MOV ES,DX
MOV DX,OFFSET BUFFERB
MOV AH,0AH
INT 21H

MOV DX,OFFSET PROMPTSTRINGENTER
MOV AH,09H
INT 21H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV DX,OFFSET PROMPTSTRINGC
MOV AH,09H
INT 21H
MOV DX,SEG BUFFERC
MOV DS,DX
MOV DX,OFFSET BUFFERC
MOV AH,0AH
INT 21H

MOV DX,OFFSET PROMPTSTRINGENTER
MOV AH,09H
INT 21H
;look for if A in B
MOV SI,OFFSET BUFFERA
MOV DI,OFFSET BUFFERB
ADD SI,02H
ADD DI,01H
PUSH SI
PUSH DI

;MOV BX,ES:[DI] ;BL记录DI中的串长
;MOV BH,00H

MOV CX,DS:[SI-01H] ;BL记录SI中的串长
MOV CH,00H
PUSH CX
AGAIN:
POP CX
POP DI
INC DI
POP SI

PUSH SI
PUSH DI
PUSH CX
REPZ CMPSB
CMP CX,0
JZ EXCHANGE ;
JMP AGAIN
EXCHANGE: MOV SI,DI
MOV DI,OFFSET BUFFERA
ADD DI,02H
POP CX
MOV CX,[DI-1] ;获得A字符个数
PUSH CX
ADD SI,CX
CLD
REPZ MOVSB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
POP CX
POP DI
MOV SI,OFFSET BUFFERC
ADD SI,02H
REPZ MOVSB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SUB DI,01H ;将DI回退一格,以便可以覆盖掉C串末尾的结束符
MOV SI,OFFSET BUFFERA
ADD SI,02H
REPZ MOVSB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NEWB: MOV DX,OFFSET BUFFERB
ADD DX,02H
MOV AH,09H
INT 21H
ENDPRO: MOV AH,4CH
INT 21H
CODE ENDS
END START
如果能够解决的话会追加悬赏

最佳答案
你好。
很幸运看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
对于你的问题我爱莫能助!
可能是你问的问题有些专业了。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。
希望我的回答也能够帮到你!
快过年了,
最后祝您全家幸福健康快乐每一天!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
婴儿奶粉有很浓的奶糖味,请问有什么问题吗
男人的心思女人猜的透吗?
幼师分别是什么,幼师主要做什么?
删除自己好友列表里没有的好友
延寿县哈尔滨亚布力有财农家院在哪里啊,我有
我发现天津有户商业房偷电,已经好几年了,举报
昆明哪个酒店综合实丽最强
怎样可以让头发变得光滑?
DNF装备被盗找回的几率大吗?
深渊怎么开启,小号38级到哪升级?
固始县信阳固始县有线电视台地址有谁知道?有
在网上如何查需要而不晓得网站的东东
DNF元素 完美装备! 详细点
为什么别人和我聊天时,右侧的画面总是这样的
你丑啥,丑你杂地。下一句是什么
推荐资讯
项城市周口星光KTV(迦南花园东南)地址在哪,
火箭用麦帝换来活塞2大主力赚吗?
怎么给杨幂写信,地址能告诉我吗?具体点儿
比黑色浅一些的颜色都有哪些
是不是不该再触碰他的生活
丝路英雄商城的金币箱子能开多少钱啊
八神庵有有没有兄弟姐妹?大蛇有没有儿子(别说
回答问题有什么好处
利川市恩施海螺水泥石棉瓦批发厂家直销地址是
现在有什么职业和技术比较适合近视了的女生去
咸安区咸宁花&茶鲜花婚庆馆在什么地方啊,我
我的生日是1994.1.1 是魔羯座。谁能告诉我一
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?