简单字符拷贝功能,汇编movsb没有生效?

猿来是我 2010-12-31 11:43:13


.model small
.stack

.code

start:

c1 db "T"
c2 db "*"

cld

lea di,c2
lea si,c1

movsb
lodsb
stosb


mov ah,02
mov dl,c2
int 21h

Exit:
mov ah,4ch
mov al,00
int 21h

end start


结果还是输出*,我期望输出T. WHY?

...全文
98 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
leetow2003 2010-12-31
  • 打赏
  • 举报
回复
不想用data,这样也可以:
.model small
.stack

.code

c1 db "T"
c2 db "*"
start:
mov ax,cs
mov ds,ax
mov es,ax
cld

lea di,c2
lea si,c1

movsb
;lodsb
;stosb


mov ah,02
mov dl,c2
int 21h

Exit:
mov ah,4ch
mov al,00
int 21h

end start
一个傻冒 2010-12-31
  • 打赏
  • 举报
回复
楼主不想用data的话,那改成这样好了。



.model small
.stack

.code

c1 db "T"
c2 db "*"

start:

mov al, c1
xchg al, c2


mov ah,02
mov dl,c2
int 21h

Exit:
mov ah,4ch
mov al,00
int 21h

end start
猿来是我 2010-12-31
  • 打赏
  • 举报
回复
一定要使用.data,然后
mov ax,@data
mov ds,ax
mov es,ax
这样的方式?

TASM中,是不是定义变量的话,就得使用.data段?

如果不使用.data数据段的话,怎么写?
一个傻冒 2010-12-31
  • 打赏
  • 举报
回复
movsb将位于地址 DS:(E)SI 的字节移到地址 ES:(E)DI。楼主要给es赋值才行。
一个傻冒 2010-12-31
  • 打赏
  • 举报
回复
data segment
c1 db "T"
c2 db "*"
data ends

stack segment
;input stack segment code here
stack ends

code segment
assume cs:code,ds:data,ss:stack
start:
mov ax, data
mov ds, ax

mov es, ax

cld
lea di,c2
lea si,c1

movsb
lodsb
stosb


mov ah,02
mov dl,c2
int 21h

Exit:
mov ah,4ch
mov al,00
int 21h
code ends
end start
leetow2003 2010-12-31
  • 打赏
  • 举报
回复
对不起,这个可以
.model small
.stack
.data
c1 db "T"
c2 db "*"
.code




start:
mov ax,@data
mov ds,ax
mov es,ax
cld

lea di,c2
lea si,c1

movsb
;lodsb
;stosb


mov ah,02
mov dl,c2
int 21h

Exit:
mov ah,4ch
mov al,00
int 21h

end start
masmaster 2010-12-31
  • 打赏
  • 举报
回复

不会写简化段的。试试完整段的吧
assume cs:code,ds:data,es:data
data segment
c1 db 'T'
c2 db '*'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov es,ax
lea si,c1
lea di,c2
cld
movsb
lodsb
mov dl,al
mov ah,2
int 21h
mov ah,4ch
int 21h
code ends
end start
leetow2003 2010-12-31
  • 打赏
  • 举报
回复
.model small
.stack
;.data

.code



c1 db "T"
c2 db "*"
start:
cld

lea di,c2
lea si,c1

movsb
lodsb
stosb


mov ah,02
mov dl,c2
int 21h

Exit:
mov ah,4ch
mov al,00
int 21h

end start

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧