花落_因为花开过 发表于 2012-11-3 22:52:04

实验四 另类做法

(1) 编程,向内存0:200~0:23f依次传递数据0~63(3fh)。

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

不正常人类 发表于 2012-11-3 22:52:05

sub bx,202h
相当于 sub bx,0202h
bx中的数变成了3d3cf
这个数不就是0~63(3fh)中的倒数第三个和第四个么
所以这就是道理之在


补充内容 (2012-11-5 11:58):
变成了3d3ch (上面的 f 打错了)

虫虫-中中(无忧) 发表于 2012-11-5 17:44:14

assume cs:codecode segment   mov bx,20h   mov ss,bx   mov sp,40h   mov bx,3f3eh   mov cx,32s:   push bx   sub bx,202h   loop s   mov ax,4c00h   int 21hcode endsend程序功能:向内存单元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的原因了~

pcode 发表于 2013-4-16 23:43:06

虫虫-中中(无忧) 发表于 2012-11-5 17:44 static/image/common/back.gif
assume cs:codecode segment   mov bx,20h   mov ss,bx   mov sp,40h   mov bx,3f3eh   mov cx,3 ...

解释的很清楚,一下子明白了.谢谢!
页: [1]
查看完整版本: 实验四 另类做法