|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- ;目的;将welcome to masm复制到段地址0B800h
- assume cs:code,ds:data
- data segment;数据段
- db 'welcome to masm'
- data ends
-
- code segment
- start:
- mov ax, 0B800h
- mov ds, ax
-
- mov es,data
-
- mov cx,15
-
- mov bx, 0
- s:mov al,es:[bx]
- mov ds:[bx],al
- inc bx
- loop s
-
- mov ax,4c00h
- int 21h
-
-
- code ends
- end start
复制代码
我的问题:显示 mov es,data severe错误 ??
根据你提供的代码,你遇到了一个错误: mov es, data。实际上,在MASM中,你无法直接将一个标签(如 data)赋值给一个段寄存器(如 es)。相反,你需要使用指令 mov ax, seg data和 mov es, ax来加载段地址。
以下是修正后的代码:
- assume cs:code, ds:data
- data segment
- db 'welcome to masm'
- data ends
- code segment
- start:
- mov ax, 0B800h
- mov ds, ax
- mov ax, seg data ; 加载数据段地址到 AX
- mov es, ax ; 将 AX 的值赋给 ES
- mov cx, 15
- xor bx, bx ; 将 BX 清零
-
- s:
- mov al, es:[bx]
- mov ds:[bx], al
- inc bx
- loop s
- mov ah, 4Ch
- int 21h
- code ends
- end start
复制代码
在修正后的代码中,我添加了两行指令 mov ax, seg data和 mov es, ax。这些指令将数据段的段地址加载到 AX 寄存器中,然后将 AX 的值赋给 ES 寄存器。现在,你可以正确地将数据从数据段复制到段地址 0B800h。
如果还有其他问题,请随时告诉我。
如果问题已经解决,请设置最佳答案
|
|