assume cs:code
code segment
mov ax,code
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,18h
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
结论是看了答案后,才知道的,汗。不过自己也思考了。。
第1个:code ,是因为code 是标记。代表程序加载后,首先指向的CS:IP 。所以,assume cs:ΧΧΧ / ΧΧΧ segment,那mov ax,ΧΧΧ 。答案只要写标记就可以了。
第2个:因为要复制的是从mov ax,ΧΧΧ~~loop s的数据长度。所以只要先通过编译,看一下CS里是多少就好了。。
- [qiangzi] ;(因为bx+1,要等于0,所以第2个字节要为0) 这话好像有点错误吧,是不是第2,3个字节为0啊 01/21 19:23
- [ryan1779] 是啊,后来发现写 mov [bx+2],cx 就好了 08/11 22:36
- [tinyparticle] 第(2)中有错误,mov [bx+2],0b83h此条指令中的0b83h是博主debug中的默认段地 07/31 18:22
- [ryan1779] 感谢ls几位的热心解答,总于搞出来了。 mov ax,0a8h[bx],bx出错了,又多用了个寄存 07/28 10:58
- [younggay] 上面的地址计算看明白了,是手动计算的,没什么问题。呵呵 不过,我跟踪了一下,你的程序在寻址想内 07/27 10:11
- [younggay] mov ax,0a8h[bx] =================== 怎么是0a8H的起始 07/27 09:53
- [younggay] 除法溢出,说明做运算的两个数据可能有点问题。你单步跟踪,看看到底是哪里出现溢出,看一下此时的两个数据 07/27 09:45
- [tinyparticle] mov ax,0a8h[bx] mov es:0ah[bx],ax 这里好像 07/26 20:04
- [游客] 程序第一行的assume写错了,编译出错,修改后程序运行正确。 07/20 09:37
- [ryan1779] 现在的理解是,16字节内的(包括16字节,算一个段,10H),超出16字节,但不超出32字节的,也算 07/19 15:52