鱼C论坛

 找回密码
 立即注册
查看: 2793|回复: 4

[汇编作业] 项羽姓秦《实验4》,全面解释4.3中的CX的值

[复制链接]
发表于 2020-2-21 23:55:33 | 显示全部楼层 |阅读模式

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

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

x
1.编程,向内存0:200~0:23F依次传送数据0~63(3FH)。

assume cs:test
test segment
mov ax,20h
mov ds,ax
mov ax,0
mov bx,0
mov cx,63
s:mov [bx],al
inc al
inc bx
loop s
mov ax,4c00h
int 21h
a ends
end

2.编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“move ax,4c00h”和“int 21h”。

assume cs:test
test segment
mov ax,20h
mov ds,ax
mov bx,0
mov cx,63
s:mov [bx],bl
inc bx
loop s
mov ax,4c00h
int 21h
a ends
end

3.下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。

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


---------------------------

很多人不明白为什么cx的值为什么是17;其实原理很简单,因为是每行编程所占的内存字节;如果有朋友不懂得话,可以直接将代码拷贝上机测试;

生成code.exe

用debug进入code.exe,按u命令可以清晰的看到,代码里面所使用的字节;

为什么是17呢?

那是因为所需要执行的代码里面的内存字节就是17;

而所执行的代码就是从【mov ax,cs】开始,一直到【loop s】,里面需要的字节就是17。

不知道我这样解释大家能不能明白。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-23 23:28:31 | 显示全部楼层
看完楼主的讲解,对第三问有点理解了
但第一第二问cx应该是64吧?因为0到63,一共64个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 23:53:35 | 显示全部楼层
13977097047 发表于 2020-3-23 23:28
看完楼主的讲解,对第三问有点理解了
但第一第二问cx应该是64吧?因为0到63,一共64个

嗯,好像是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-28 16:20:44 | 显示全部楼层
第三问里面的应该是18吧,因为是0~17
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-30 16:37:50 | 显示全部楼层
yqqyqqY 发表于 2020-3-28 16:20
第三问里面的应该是18吧,因为是0~17

难道我又错了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 09:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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