鱼C论坛

 找回密码
 立即注册
查看: 3409|回复: 5

[汇编作业] 实验4 [bx]和loop的使用

[复制链接]
发表于 2020-3-22 14:29:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 流风逸雪 于 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:[cx],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:[bx],cl
        loop s
        
        
        mov ax,4c00H
        int 21h
codesg ends
end
编译成功,以上可以说体现了bx与cx的区别以及各自的意义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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:[bx],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,[bx]
        mov es:[bx],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,[bx]
        mov es:[bx],al
        inc bx
        loop s
        
        
        mov ax,4c00H
        int 21h
codesg ends
end
编译成功,结果也很完美
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 14:36:40 | 显示全部楼层
(1)的第一种为什么编译会不通过呢,求解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 22:10:47 | 显示全部楼层
朔风刀 发表于 2020-5-5 14:36
(1)的第一种为什么编译会不通过呢,求解答

因为 es:[xx] 里面,xx只能是bx寄存器,所以报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 22:28:56 | 显示全部楼层
流风逸雪 发表于 2020-3-22 15:46
不过好像前两行没用来着。。。去掉前两行也通过编译了

结果还是一样的

mov ax, cs 不就知道在哪儿开始了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-23 15:11:25 | 显示全部楼层
朔风刀 发表于 2020-5-5 14:36
(1)的第一种为什么编译会不通过呢,求解答

你要复制它的第二个,不然跟它一样第八行报错。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 03:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表