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

哪里出错?

ehszt 发布于 2020-07-26 20:45, 5011 次点击
DATAS SEGMENT
   db 'welcome to masm!'
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov ax,0B800h
    mov es,ax
    mov bx,0
    mov cx,16
    mov di,0
  
 s: mov byte ptr es:[bx],[di]  ;提示这一行有错误
    mov byte ptr es:[bx+1],2h
    add bx,2
    inc di
    loop s
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
怎么错了,求指教!
2 回复
#2
ehszt2020-07-26 21:07
知道了,不能内存对内存直接传送!
#3
Valenciax2020-07-27 05:49
可以用别的指令替代

程序代码:

DATAS SEGMENT
   db 'welcome to masm!'
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov ax,0B800h
    mov es,ax
    mov si,0
    mov cx,16
    mov di,0
    mov ah,2h
    cld        ;方向标志,影响lodsb等指令


 s: lodsb    ;等同mov ds:[si],al ... inc si
    stosw    ;等同mov es:[di],ax ... add di,2
    loop s
    mov ah,7    ;等待键盘输入
    int 21h    ;调用dos
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
1