- [kanwangxue] 如果是文字的,不是特别好啊,体力活,如果文字还加点动画,那就必须顶了。 01/15 01:10
- [kanwangxue] 必须顶啊。 01/15 00:54
- [ltoiii] 既然是实现loop功能,是否要考虑s和se标号? mov bx,offset s - offset 12/09 12:09
- [xiaoyao2012] 正确 11/01 15:33
- [xuer2016] 又找到2条被我忽视的地方: 1.PUSH 和 POP 针对字单元 2.POP 不能是CS 10/26 10:57
- [xuer2016] 学习了 我书写不规范,16进制字母前不加0,后面不加H,以后要注意了。。。 10/26 10:51
- [xuer2016] 来老师这学习下 10/26 10:31
- [youthangel] 不妙,CPU的利用率一下子就上去了。还好我的处理器不是太弱,35%左右的利用率。建议博主在修改一下 10/20 08:23
- [fpamc] 在我心里她就是我的女神。 10/02 08:58
- [newpeople] 你女朋友用得了简直就是一个女神…… 10/01 08:10
- [99998888] 请您指点一下如何找到会ASSEMBLER 语言的翻译,翻译成中文或英文。我的QQ ; 9097815 07/25 09:56
- [jeremy] 我觉得你学习的挺好,可以加你扣扣吗?我的469614823 08/07 14:46
- [zhangbo0805] 哈哈, 你好呀!很希望认识你呀!我发现你学习的积极性很高!正想向您学习呢! 07/31 23:31
- [tomato] 知道了,排得还挺满。 05/29 16:35
- [tomato] 现在学习情况怎么样?在做课设二还是什么? 05/29 10:41
- [tomato] 你的留言收到了。 05/05 23:51
- [fpamc] 开始学习c咯! 05/03 21:40
- [fpamc] 居然不能发博客了……! 04/22 21:03
- [tomato] 你相册中的游戏界面我看过了,非常好,界面很漂亮,很有创造力。博主,很有潜力。加油,一定能把这个游戏做 04/20 23:46
- [fpamc] 忙了半个月,不在家,没时间学习汇编。 但是在途中想到了一个有史以来最难的程序。对于刚学完9章的我。 04/13 20:56
[2012-03-14 21:16] 第六章作业(2)
assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h
data ends
stack segment
dw 0,0
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
C:\MASM>debug q.exe
-r
AX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14CA ES=14CA SS=14DA CS=14DC IP=0000 NV UP EI PL NZ NA PO NC
14DC:0000 B8DB14 MOV AX,14DB
-u
14DC:0000 B8DB14 MOV AX,14DB
14DC:0003 8ED0 MOV SS,AX
14DC:0005 BC1000 MOV SP,0010
14DC:0008 B8DA14 MOV AX,14DA
14DC:000B 8ED8 MOV DS,AX
14DC:000D FF360000 PUSH [0000]
14DC:0011 FF360200 PUSH [0002]
14DC:0015 8F060200 POP [0002]
14DC:0019 8F060000 POP [0000]
14DC:001D B8004C MOV AX,4C00
-d 14da:0 3
14DA:0000 23 01 56 04 #.V.
-g 001d
AX=14DA BX=0000 CX=0042 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=14DA ES=14CA SS=14DB CS=14DC IP=001D NV UP EI PL NZ NA PO NC
14DC:001D B8004C MOV AX,4C00
-d 14da:0 3
14DA:0000 23 01 56 04 #.V.
-t
AX=4C00 BX=0000 CX=0042 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=14DA ES=14CA SS=14DB CS=14DC IP=0020 NV UP EI PL NZ NA PO NC
14DC:0020 CD21 INT 21
-p
Program terminated normally
①CPU执行程序,程序返回前,data段中的数据 不变 。
②CPU执行程序,程序返回前,CS= 14dcH ,SS= 14dbH ,DS= 14daH 。
③设程序加载后,CODE段的段地址为X,则DATA段的段地址为 X-2 ,STACK段的段地址为 X-1 。
④对于如下定义的段:
name segment
……
name ends
如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为 ((N+15)/16)*16 。
④解析:
N分为被16整除和不被16整除。
当N被16整除时: 占有的空间为(N/16)*16
当N不被16整除时: 占有的空间为(N/16+1)*16,N/16得出的是可以整除的部分,还有一个余数,余数肯定小于16,加上一个16。
程序加载后分配空间是以16个字节为单位的,也就是说如果不足16个字节的也分配16个字节。
两种情况总结成一个通用的公式:((N+15)/16)*16
这道题,学生只是抽象的理解规律,具体的表达和这个公式的由来,完全不懂!望老师讲解。
[ tomato 发表于 2012-03-14 23:33 ]
没问题。
[ fpamc 发表于 2012-03-14 23:43 ]
老师啊~第四问的解析有问题!!!!
我虽然理解含义,但是这个公式的由来和计算不懂……
[ tomato 发表于 2012-03-15 00:01 ]
可以分两种情况分别说明。但是,我看这个公式也是对的。它很奇妙,巧妙的区分了是否能被16整除,如果能被16整除,不会加一,如果不能被16整除,则要加一。这属于数学范畴,关键是明白段的分配原理就可以了。
[ fpamc 发表于 2012-03-15 00:10 ]
还是没懂……
[ chinatree 发表于 2012-03-15 08:40 ]
设n为16和17试试。
[ fpamc 发表于 2012-03-15 10:22 ]
当n=16
占16字节~
当n=17
占32字节~
规律明白,就是不会推出这个公式……
[ chinatree 发表于 2012-03-15 11:23 ]
(n%16)?(n/16+1)*16:n
这个总能明白吧?
其实求解一个数学问题方法很多,不一定要按别人的方法来,有时可以试着想出一种属于自己的办法。
[ fpamc 发表于 2012-03-15 12:20 ]
那个~不明白~
嘿嘿~我初中毕业~
(n%16)?(n/16+1)*16:n这个就更不明白了~
[ chinatree 发表于 2012-03-15 16:45 ]
?: 是c里的一个运算符,意思是说如果问号前的(表达式的)值不为0,就返回问号后的(表达式的)值,否则返回冒号后的(表达式的)值。
[ fpamc 发表于 2012-03-15 22:29 ]
那个,百分比号呢?
[ chinatree 发表于 2012-03-16 08:43 ]
求余数,就是取模。