| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 737 人关注过本帖
标题:请教一段代码
只看楼主 加入收藏
sldtk1
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:624
专家分:258
注 册:2006-5-4
结帖率:100%
收藏
 问题点数:0 回复次数:4 
请教一段代码
编写程序段,完成下面公式的计算(其中:变量X和Y是32位有符号数,变量A,B和Z是16位有符号数)。

A←(X-Y+24)/Z的商,B←(X-Y+24)/Z的余数

DATA1 SEGMENT
X DD ?
Y DD ?
Z DW ?
A DW ?
B DW ?
DATA1 ENDS
CODE1 SEGMENT
MOV AX, X
MOV DX, X+2 ;用(DX:AX)来保存32位变量X的数值
SUB AX,Y
SBB DX, Y+2 ;(DX:AX)-(Y+2:Y)
ADD AX, 24D
ADC DX, 0 ;(DX:AX)+24
IDIV Z
MOV A, AX
MOV B, DX
CODE1 ENDS
将商存到A单元这个我会了,就是不明白是怎么把余数存到B里面,小弟刚学汇编,书看了不少可没人教就是难懂,望各位指点一下
搜索更多相关主题的帖子: colSpan 变量 vAlign 代码 
2007-06-12 18:37
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
8位商放在AL,余数放在AH
16位商放在AX,余数放在DX

2007-06-12 19:08
sldtk1
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:624
专家分:258
注 册:2006-5-4
收藏
得分:0 
还是不太清楚,能不能说具体点
MOV DX, X+2 ;用(DX:AX)来保存32位变量X的数值
SBB DX, Y+2 ;(DX:AX)-(Y+2:Y)
ADC DX, 0 ;(DX:AX)+24
为什么要把X+2的内容放到寄存器DX呢,还有用SBB这个减法有什么用?然后加0?后面的注释看不懂
2007-06-12 19:42
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
是MOV AX, X MOV DX, X+2 两条指令来保存32位变量X的数值
因为X是双字,所以占4个字节,把X和X+1的内容(也就是2个字节)放在AX中,把X+2和X+3的内容放在DX中

SUB AX,Y ;先用低位减去Y的低4位
SBB DX, Y+2 ;用高位带借位减去Y的高4位

ADD AX, 24D
ADC DX, 0
同上面两条语句类似

2007-06-12 20:20
sldtk1
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:624
专家分:258
注 册:2006-5-4
收藏
得分:0 
这么说有点明白了,谢谢版主
2007-06-12 20:41
快速回复:请教一段代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012150 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved