|
发表于 2023-8-1 20:24:24
|
显示全部楼层
回答内容:修改汇编程序以实现正确的目标地址数据
你的问题是目标地址数据不正确。看起来你在代码中使用了错误的内存段地址。根据你的需求,如果要将字符串复制到段地址0B800h,你应该使用数据段标签中的偏移地址作为目标地址。
以下是修改后的代码,将字符串复制到目标地址0B800h:
- assembly
- ; 目的:将welcome to masm复制到段地址0B800h
- assume cs:code, ds:data
- data segment
- db 'welcome to masm'
- data ends
- code segment
- start:
- mov ax, 0B800h
- mov es, ax
- mov ax, SEG data
- mov ds, ax
- mov cx, 15
- mov si, 0
- mov di, offset data ; 使用数据段标签的偏移地址作为目标地址
- s:
- mov al, ds:[si]
- mov es:[di], al ; 低字节放字符
- mov ah, 2h ; 绿色
- mov es:[di+1], ah ; 高字节放颜色
- inc si
- add di, 2
- loop s
- mov ax, 4c00h
- int 21h
- code ends
- end start
复制代码
在修改后的代码中,我将 mov di 的目标地址更改为 offset data,这表示使用数据段标签的偏移地址。这样,字符串将被正确地复制到段地址0B800h。
希望这次能够满足你的需求。如果还有其他问题,请随时提问。
如果回答对你有帮助,请给我一个最佳答案!   |
|