我的汇编代码,用于在8C0A2开始的地址存储一个字(总共40h字)
结果表示代码是寄存器CX为0000h(如所示),DI为0082h(如所示)。
在gven地址检查细分ES后,我发现它没有设置为AFFEh这个词,我不知道为什么!
.186
.model small
.stack 100h
.data
count dw 0040h ; write 40 times the string
muster dw 0AFFEh ; AFFEh to the Extrasegment with the
insert dw 8C0Ah ; address 8C0Ah
.code
start:
mov ax, @data
mov ds, ax
mov es, insert
mov ax, muster
mov cx, count
mov di, 2
rep stosw
mov ah, 4Ch
int 21h
end start
答案 0 :(得分:0)
我不确定你到底要做什么。 es
指向的单词不包含0AFFEh
的原因是mov di, 2
- 模式插入从(es+2)
开始,然后继续到更高的地址。
答案 1 :(得分:0)
mov es,INSERT可能无效,您可能需要用bp指向以获取十六进制值
mov ax,DATA
mov ds,ax
mov bp,INSERT
mov es,[bp]
mov bp,MUSTER
mov ax,[bp]
mov bp,COUNT
mov cx,[bp]
mov di,2
rep stosw
DATA
COUNT
dw 40
MUSTER
dw AFFE
INSERT
dw 8C0A
所有我得到的是一系列分数和曲线... /〜/〜/〜/〜,这是AFFE十六进制内容的斧头
通常losb / losw与stosw一起使用,这会加载al / ax
==========================
如果这确实有效
mov es, insert
mov ax, muster
mov cx, count
然后您所做的就是使用INSERT等的内存地址加载es,而不是其内容
"在gven地址检查细分ES后,我发现它没有设置为AFFE"
ES有8C0A,这是" INSERT"