海浩网论坛

 找回密码
 关闭注册
搜索
热搜: 女囚槛 win7
查看: 180|回复: 27
打印 上一主题 下一主题

第三题 [复制链接]

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
跳转到指定楼层
1#
发表于 2004-6-3 21:11:17 |只看该作者 |倒序浏览
题前讲解
多题前讲解字节非压缩型BCD码的乘法运算与加减法不同,要求参加运算的乘数,被乘数必须用非压缩型BCD码,即高4位为0,低4位表示一位十进制数。也就是说当乘数,被乘数有ASCII码表示的话,则在进行乘法运算之前,必须将ASCII码高4位清零,然后采用指令系统提供的十进制乘法调整指令AAM和MUL指令配合,就可完成十进制的乘法运算!


本题的分析
设被乘数从低位到高位以ASCII的码形式存放在ADR1为首址的数据区中。同样,乘数也以ASCII码形式存放在ADR2单元中,所得运算后的乘积存放在RESULT为首址的单元中。



DATA    SEGMENT
ADR1    DB  ‘49375'  ;定义被乘数57394
ADR2    DB  ‘8’     ;定义乘数8
RESULT  DB   6DUP(?);定义存放结果单元
DATA    ENDS
CODE    SEGMENT
        ASSUME CS:CODE,DS:DATA,ES:DATA
MMULT: MOV AX,DATA
        MOV DS,AX
        MOV ES,AX
        CLD
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0 支持支持0 反对反对0

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
2#
发表于 2004-6-3 21:11:52 |只看该作者
MOV SI,OFFSET ADR1
       MOV DI,OFFSET RESULT
       MOV CX,5
       AND ADR2,0FH  ;将乘数的高4位清0
       MOV BYTE PTR[DI],0
L1:LODSB   ;[AL]←SI且SI←SI+1
    AND  AL,0FH ;将被乘数对应的高4位清0
    MUL ADR2 ;将最低位开始相乘,运算结果送AX
    AAM    ;十进制数乘法运算调整
    ADD AL,[DI]   ;加进位
    AAA    ;十进制数加法运算调整
    OR  AL,30H  ;将结果位换成ASCII码
    STOSB  ;[DI]←AL且DI←DI+1
    MOV   [DI] ,AH ;存放前运算结果位

使用道具 举报

UID
36391
注册时间
2004-4-23
帖子
3681
精华
0
3#
发表于 2004-6-3 21:13:19 |只看该作者
我也来听课行不

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
4#
发表于 2004-6-3 21:19:11 |只看该作者
可以,欢迎。

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
5#
发表于 2004-6-3 21:21:08 |只看该作者
LOOP L1   ;重复相乘运算5次
      OR BYTE PTR[DI],30H
      MOV  CX,6  ;输出乘积结果6位数
L2:  MOV  DL,[DI] ;从高位到低位开始输出显示
      MOV  AH,02H  ;2号系统功能调用
      INT  21H
      DEC  DI
      LOOP  L2
      MOV  AH,4CH
      INT  21H
CODE  ENDS
      END MMULT

使用道具 举报

UID
37314
注册时间
2004-5-19
帖子
1722
精华
0
6#
发表于 2004-6-3 21:28:43 |只看该作者
高手来了,那把我的另外一个问题也给解决了吧!

使用道具 举报

荣誉版主

铁衣琴心

UID
35281
注册时间
2004-3-16
帖子
19438
精华
28
7#
发表于 2004-6-3 21:29:53 |只看该作者
我可不可以晕一会儿?

使用道具 举报

UID
37314
注册时间
2004-5-19
帖子
1722
精华
0
8#
发表于 2004-6-3 21:30:29 |只看该作者
我的机子注删表老是被别人改动!现在又被别人给禁用了!问大家一下:怎么开通已经被禁用的注删表,然后把它禁用!不给别人打开!

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
9#
发表于 2004-6-3 21:47:35 |只看该作者
还原法:在DOS下
A盘或者C盘下:SCANREG/RESTORE回车就可以恢复注册表。      
   禁用注删表在到注册表编辑窗口中去

使用道具 举报

UID
36533
注册时间
2004-4-26
帖子
703
精华
0
10#
发表于 2004-6-3 21:48:57 |只看该作者
我怎么什么也没看懂?!看来我也得去晕一下了。

使用道具 举报

UID
37314
注册时间
2004-5-19
帖子
1722
精华
0
11#
发表于 2004-6-3 21:55:10 |只看该作者
好像不行!我试过了!不是这么简单吧!

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
12#
发表于 2004-6-3 21:56:35 |只看该作者
如果注删表不是人为破坏的,是程序自己错了,这种方法可能不行!要用另外和一种恢复法!

要保存一个注删表文稿件才可以

使用道具 举报

UID
37314
注册时间
2004-5-19
帖子
1722
精华
0
13#
发表于 2004-6-3 21:59:13 |只看该作者
那就说啊!具体一点吧!

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
14#
发表于 2004-6-3 22:05:28 |只看该作者
说挺麻烦的,手都打酸了。劝你格式化。

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
15#
发表于 2004-6-3 22:16:21 |只看该作者
恢复方法:
1,将下列字段保存为一个扩展名为REG的注删表文件:
    REGEDIT4
[HKEY-CURRENT-USER/software/misrosft/windows/currentversion/policies/system]
   "disableregistrytools''=dword:00000000
2,保存文件后,双击该文件,将其导入注删表既可!

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
16#
发表于 2004-6-3 22:21:40 |只看该作者
禁用注删表的方法:
  在注删表编辑窗口的左窗口中依次打开:
[HKEY-CURRENT-USER/software/misrosft/windows/currentversion/policies/system]分支
然后新建DWORD值DISABLEREGISTRYTOOLS,并将键值设置为1

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
17#
发表于 2004-6-3 22:24:53 |只看该作者
备分注删表:在DOS下
  C盘下输入scanreg回车

star:creat  backups 备份
star:view   backups查看(restore还原)

使用道具 举报

UID
37314
注册时间
2004-5-19
帖子
1722
精华
0
18#
发表于 2004-6-3 22:28:26 |只看该作者
谢谢你了!不是你的朋友吗?改天你请他吃饭不就行了!我给钱了OK吧!

使用道具 举报

UID
34847
注册时间
2004-2-29
帖子
3905
精华
0
19#
发表于 2004-6-3 22:32:07 |只看该作者
不为这事我也会请他吃饭,请客只不过是聚会的借口罢了。钱虽不多,但自己还有。

使用道具 举报

UID
37314
注册时间
2004-5-19
帖子
1722
精华
0
20#
发表于 2004-6-3 22:55:21 |只看该作者
那好啊请吃的时候把我也算上啊!我想认识一下你这位朋友!可以吗?哦,忘记了你在安徽!

使用道具 举报

您需要登录后才可以回帖 登录 | 关闭注册

2021 , Hello Everyone ^_^ ^_^ ^_^