流风逸雪 发表于 2020-3-22 14:29:00

实验4 [bx]和loop的使用

本帖最后由 流风逸雪 于 2020-3-22 14:33 编辑

(1)
assume cs:codesg
codesg segment
        mov ax,0FFFFH
        mov ds,ax
        mov ax,0020h
        mov es,ax
        mov cx,63
s:        mov es:,cl
        loop s
       
       
        mov ax,4c00H
        int 21h
codesg ends
end
想要偷懒,结果第八行编译出错
于是
assume cs:codesg
codesg segment
        mov ax,0FFFFH
        mov ds,ax
        mov ax,0020h
        mov es,ax
        mov cx,63
s:        mov bx,cx
        mov es:,cl
        loop s
       
       
        mov ax,4c00H
        int 21h
codesg ends
end
编译成功,以上可以说体现了bx与cx的区别以及各自的意义

流风逸雪 发表于 2020-3-22 15:46:13

不过好像前两行没用来着。。。去掉前两行也通过编译了
assume cs:codesg
codesg segment
        mov ax,0020h
        mov es,ax
        mov cx,63
s:        mov bx,cx
        mov es:,cl
        loop s
       
       
        mov ax,4c00H
        int 21h
codesg ends
end
结果还是一样的
(2)
第二题让我用九行,结果我第一题就只用了8行.......就不重复贴代码了
(3)
先直接照着书上打,以得知程序存放的位置082e:0
而mov ax, 这个空格内容编译后会编译为0
-u 082e:0 之后得知mov ax,4c00h之前为0018h(24)个字节//虽然显示为0016h这一行,但事实上程序是从零开始的
我又想偷懒,直接 mov ax,ss来定位程序位置
assume cs:codesg
codesg segment
        mov ax,ss
        mov ds,ax
        mov ax,0020h
        mov es,ax
        mov bx,0
        mov cx,0016h
s:        mov al,
        mov es:,al
        inc bx
        loop s
       
       
        mov ax,4c00H
        int 21h
codesg ends
end
结果程序是在082e:0 ,而不是ss指向的082d:0
所以还是老老实实:
assume cs:codesg
codesg segment
        mov ax,082eh
        mov ds,ax
        mov ax,0018h
        mov es,ax
        mov bx,0
        mov cx,0016h
s:        mov al,
        mov es:,al
        inc bx
        loop s
       
       
        mov ax,4c00H
        int 21h
codesg ends
end
编译成功,结果也很完美

朔风刀 发表于 2020-5-5 14:36:40

(1)的第一种为什么编译会不通过呢,求解答

mrthreepa 发表于 2020-5-6 22:10:47

朔风刀 发表于 2020-5-5 14:36
(1)的第一种为什么编译会不通过呢,求解答

因为 es: 里面,xx只能是bx寄存器,所以报错

mrthreepa 发表于 2020-5-6 22:28:56

流风逸雪 发表于 2020-3-22 15:46
不过好像前两行没用来着。。。去掉前两行也通过编译了

结果还是一样的


mov ax, cs 不就知道在哪儿开始了吗

书剑共度 发表于 2020-7-23 15:11:25

朔风刀 发表于 2020-5-5 14:36
(1)的第一种为什么编译会不通过呢,求解答

你要复制它的第二个,不然跟它一样第八行报错。。
页: [1]
查看完整版本: 实验4 [bx]和loop的使用