回 帖 发 新 帖 刷新版面

主题:8086汇编初学者问题?谢谢回复!

以下是串中查找字符的程序:
---------------------------------
.data
 string db 'personal computer$'
 seed db 'a'
.code
.startup
  mov ax,@data
  mov es,ax
  mov di,offset string
  mov al,seed
  cld
  mov cx,18
  repnz scasb
  jnz non
  mov al,'Y'
  jmp output
non:  mov al,'N'
output:  mov dl,al
  mov ah,02h
  int 21h
.exit 0
-------------------------------
问题:
1.上程序中 mov ax,@data 语句起到什么作用,@data是有什么作用?能否使用其他语
   句代替此句代码?
2.mov di,offset string能否使用 lea di,dtring 代替呢?如果可以代替,那他们俩
   的区别在哪里呀?
本人是汇编菜鸟,希望大虾们帮助回复一下!在此先谢谢了!

回复列表 (共3个回复)

沙发

1.感觉应该是MOV AX,DATA
                    MOV DS,AX
 没有看见过MOV AX,@DATA
2.两条语句等价,唯一地区别是第一句长一点

板凳

有没有再详细一点的解释!顶..............

3 楼

mov ax,@data ;将DATA段的段址放入AX
此处@data和.data对应,不能用mov ax,data

本代码中,LEA 和 MOV 的作用等价,只是时钟周期不同
在别的地方,LEA 在对变址寄存器的值的计算(加乘)有妙用

我来回复

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