鱼C论坛

 找回密码
 立即注册
查看: 1713|回复: 3

实验四 另类做法

[复制链接]
发表于 2012-11-3 22:52:04 | 显示全部楼层 |阅读模式
2鱼币
(1) 编程,向内存0:200~0:23f依次传递数据0~63(3fh)。

   
assume cs:code
code segment
     mov bx,20h
     mov ss,bx
     mov sp,40h
     mov bx,3f3eh
     mov cx,32
s:   push bx
     sub bx,202h
     loop s
     mov ax,4c00h
     int 21h
code ends
end
红色字 从何而来

最佳答案

查看完整内容

sub bx,202h 相当于 sub bx,0202h bx中的数变成了3d3cf 这个数不就是0~63(3fh)中的倒数第三个和第四个么 所以这就是道理之在 补充内容 (2012-11-5 11:58): 变成了3d3ch (上面的 f 打错了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-3 22:52:05 | 显示全部楼层
sub bx,202h
相当于 sub bx,0202h
bx中的数变成了3d3cf
这个数不就是0~63(3fh)中的倒数第三个和第四个么
所以这就是道理之在


补充内容 (2012-11-5 11:58):
变成了3d3ch (上面的 f 打错了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-5 17:44:14 | 显示全部楼层
assume cs:code
code segment
     mov bx,20h
     mov ss,bx
     mov sp,40h
     mov bx,3f3eh
     mov cx,32
s:   push bx
     sub bx,202h
     loop s
     mov ax,4c00h
     int 21h
code ends
end
程序功能:向内存单元0:200~0:23f 传递0~63这些数字
这个程序帝的确是够另类的了......看得我真想叫一声佩服!
它实际上是把栈顶指针指向0:200~0:23f的下一个内存单元了 然后将3f3e送入bx寄存器当中,再将bx入栈,依照高位存放在高地址,低位存放低地址的原则,此时3f,3e不就正好躺在23f,23e这俩个内存单元中了吗~
然后想要继续传递3e前面的 3d,3c  不是需要将bx-0202H吗~~(3f3eH-0202H=3d3cH)
这就是202H的原因了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-16 23:43:06 | 显示全部楼层

解释的很清楚,一下子明白了.谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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