回 帖 发 新 帖 刷新版面

主题:大学的一道题!~请进来看看撒!~~

[em2]怎么用串操作数把变量反序输出?
我认为用串操作数比较麻烦,而我又是一个初学者,所以请教大侠们试着做一下!~让我参考一下!~

回复列表 (共5个回复)

沙发

可用冒泡法实现:
在清华大学出版社的<<IBM_PC 汇编语言程序设计>>(第二版)第五章的得到答案

板凳

.386
DATA SEGMENT USE16
BUF1 DB ...(数据省略)
N=$-BUF1
BUF2 DB 30 DUP(0)
DATA ENDS
(堆栈和代码段定义省略)
     MOV CX,N
     LEA SI,BUF1+N
     LEA DI,BUF2
LOP1:MOVSB
     SUB SI,2
     LOOP LOP1
     LEA DX,BUF2
     MOV AH,9
     INT 21H
(后省略)

3 楼

串操作指令吧,应该是REP MOVSB
SI指向源串,DI指向目的串,设定CLD正向传送,最后输出目的串就OK了

4 楼

楼上的,你说有问题因为,你设置的df位,必须si di 变化的方向一致,所以你楼上的大侠才是对的
 

5 楼

第 2 楼的好像也有点问题,因为我感觉你的di没变啊,我把你的程序作如下改写不知道可不可以  

.386
DATA SEGMENT USE16
BUF1 DB ...(数据省略)
N=$-BUF1
BUF2 DB 30 DUP(0)
DATA ENDS
(堆栈和代码段定义省略)
     MOV CX,N
     LEA SI,BUF1+N-1
     LEA DI,BUF2
LOP1:MOV AL,[SI]
      MOV [DI],AL
      DEC SI 
     INC DI 
     LOOP LOP1
     LEA DX,BUF2
     MOV AH,9
     INT 21H
(后省略)
 

我来回复

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