主题:大学的一道题!~请进来看看撒!~~
luff
[专家分:0] 发布于 2006-01-04 19:25:00
[em2]怎么用串操作数把变量反序输出?
我认为用串操作数比较麻烦,而我又是一个初学者,所以请教大侠们试着做一下!~让我参考一下!~
回复列表 (共5个回复)
沙发
苏小婷 [专家分:0] 发布于 2006-06-07 22:10:00
可用冒泡法实现:
在清华大学出版社的<<IBM_PC 汇编语言程序设计>>(第二版)第五章的得到答案
板凳
TONYRLH [专家分:40] 发布于 2006-06-08 02:40:00
.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 楼
AppleSeed [专家分:0] 发布于 2006-06-08 14:53:00
串操作指令吧,应该是REP MOVSB
SI指向源串,DI指向目的串,设定CLD正向传送,最后输出目的串就OK了
4 楼
船尾跳鱼 [专家分:0] 发布于 2006-06-08 19:45:00
楼上的,你说有问题因为,你设置的df位,必须si di 变化的方向一致,所以你楼上的大侠才是对的
5 楼
船尾跳鱼 [专家分:0] 发布于 2006-06-08 19:56:00
第 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
(后省略)
我来回复