鱼C论坛

 找回密码
 立即注册
查看: 1714|回复: 2

[汇编作业] 第五章 实验4.3

[复制链接]
发表于 2014-7-12 00:45:59 | 显示全部楼层 |阅读模式

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

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

x
看到每个人的第二空都是18,但我做的事24,我觉得彼此都没错!废话不多说, 上代码

assume cs:code

code segment
start:                mov ax,code
                        mov ds,ax
                       
                        mov ax,0020h
                        mov es,ax
                        mov bx,0
                        mov cx,24    
                       
                s:        mov al,[bx]
                        mov es:[bx],al
                        inc bx
                        loop s
                       
                        mov ax,4c00h
                        int 21h
                       
code ends

end start
                       

某鱼友的说法“cx后面填的都是数字,但是首先我们不知道程序要复制多长
所以我们可以用0来代替,先把程序编译,连接,运行后。
-r 后可以看出程序的总长度,因为cx是存放代码长度的,cx=23,哪章讲过忘记了。
程序复制的是从 mov ax,code 开始到 loop s结束,长度为cx中数据减去最后两个语句的长度,由-u 可以看出最后两个长度为5字节,所以cx=23h-5h=18h,dos默认为16位,等出结果”让我豁然开朗!
——————————————————————————————————————————————————————————————
循环次数设为0时,debug程序,我的cx是1D也就是29,按书上的答案18得到图1所示指令行 MOV cx,0012
但这样就减去了11个字节,mov ax,4c00h,int 21h只有5个字节,所以在我的电脑上应该填24,结果如图2.
指令行与答案一致,说明具体问题具体分析,实践才是硬道理,不能有以标准答案为准的学习风气!

语文是体育老师教的,不要见谅!

1

1

2

2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-15 09:17:49 | 显示全部楼层
别人第二空填的是十六进制的18H 你填的是十进制的24 十六进制的18H 等于十进制的24 这个没什么区别吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-16 21:09:29 | 显示全部楼层
同楼上,不知道楼主在讲什么....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-28 21:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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