注册 登录
编程论坛 汇编论坛

[求助]看看这个问题!!

曾小 发布于 2006-11-18 14:21, 1255 次点击
假定数据定义如下:
CONAME DB 'SPACE EXPLORERS INC.'
PRLINE DB 20 DUP(' ')
用串指令编写程序段完成以下功能:
从右到左把CONAME 中的字符串传送到PRLINE.
只是想请教怎样完成"从右到左"的功能就好了!
谢谢了!!!!!
18 回复
#2
菜鸟上路2006-11-18 14:53
先LEA AX,CONAME
然后ADD AX,20
现在AX中就是CONAME的最右边了,接下来用循环就能移入PRLINE中了
#3
wchx2152006-11-18 16:25
也可以以堆栈的方式进行。
#4
a40993692006-11-18 17:17

assume cs:code
code segment
begin jmp near s1
CONAME DB 'SPACE EXPLORERS INC.'
PRLINE DB 20 DUP(' ')
s1:lex bx,coname
add bx,20
mov cx,20
mov si,offset prline
s2:mov ax,[bx]
mov [si],ax
int si
dec bx
loop s2
mov ax,4c00h
int 21h
code ends
end begin

这是第一个方法
assume cs:code
code segment
begin:jmp s1
CONAME DB 'SPACE EXPLORERS INC.'
PRLINE DB 20 DUP(' ')
s1:mov ax,code
mov ds,ax
mov cx,20
mov bx,offset coname
s2:push [bx]
int bx
loop s2
mov cx,20
mov ax,offset prline
s3:pop [ax]
int ax
loop s3
mov ax,4c00h
int 21h
code ends
end begin

#5
曾小2006-11-19 11:39
谢谢各位了!呵呵!
#6
曾小2006-11-20 11:29
二楼的同学:不行哦!没用啊!
三楼的同学你的程序也有错误哦!
#7
菜鸟上路2006-11-20 12:59
以下是引用菜鸟上路在2006-11-18 14:53:09的发言:
先LEA AX,CONAME
然后ADD AX,20
现在AX中就是CONAME的最右边了,接下来用循环就能移入PRLINE中了

用这种方法不行?

#8
曾小2006-11-20 13:06
不行!"非法使用寄存器!"而且也有"empty string"的警告!
应该不是我其他地方的问题吧!

[此贴子已经被作者于2006-11-20 13:08:17编辑过]

#9
菜鸟上路2006-11-20 18:01
不会吧
#10
曾小2006-11-22 10:28
是啊!
#11
菜鸟上路2006-11-22 13:19
LS发下代码来看下,应该不会报"非法使用寄存器!"
#12
曾小2006-11-24 18:19

恩,好 .有错误请修改哦!
dseg segment
coname db 'space explorers inc.'
dseg ends
eseg segment
prline db 20 dup(' ')
eseg ends
cseg segment
assume cs:cseg,ds:dseg ,es:eseg
start: mov ax,dseg
mov ds,ax
mov ax,eseg
mov es,ax
lea ax,coname
add ax,20
lea si,ax
lea di,prline
mov cx,20
std
rep movsb
ret
cseg ends
end start

#13
菜鸟上路2006-11-25 15:05
还没学过32位的语法
#14
菜鸟上路2006-11-25 15:17

.model small
.386
option casemap:none

data segment
coname db 'space explorers inc.'
prline db 20 dup(?)
data ends

code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov bx,offset coname
add bx,20
mov cl,20
mov dx,offset prline
sign:
mov dx,bx
inc dx
dec bx
loop sign

mov dx,offset prline
mov ah,09h
int 21h
mov ax,4c00h
int 21h
code ends
end start

刚刚写了个16位的,手头没工具,不知道对不对?

#15
3037709572006-11-26 00:56
你就不能下载一个?才768kb大小!懒就一个字!
#16
菜鸟上路2006-11-26 10:23
以下是引用303770957在2006-11-26 0:56:21的发言:
你就不能下载一个?才768kb大小!懒就一个字!

我昨天是在无硬盘网吧,你来帮我下?

#17
曾小2006-11-27 12:34
十四楼的朋友:你的程序没结果,得到的是空格!
#18
srl99732006-11-30 14:13

.model small
.386
option casemap:none

data segment
coname db 'space explorers inc.'
prline db 20 dup(?)
data ends

code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov bx,offset prline
mov si,bx
mov cx,20
ll: dec si
mov al,[si]
mov [bx],al
inc bx
loop ll
mov dx,offset prline
mov ah,09h
int 21h
mov ax,4c00h
int 21h
code ends
end start


#19
曾小2006-12-01 16:07
谢谢!
我先去调试一下,看不懂再请教!
1