海浩网论坛

标题: 第三题 [打印本页]

作者: 卖女孩的火柴    时间: 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
作者: 卖女孩的火柴    时间: 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 ;存放前运算结果位
作者: 此朱非彼猪    时间: 2004-6-3 21:13:19

我也来听课行不
作者: 卖女孩的火柴    时间: 2004-6-3 21:19:11

可以,欢迎。
作者: 卖女孩的火柴    时间: 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
作者: 梅子1983    时间: 2004-6-3 21:28:43

高手来了,那把我的另外一个问题也给解决了吧!
作者: 司空ゼ斩    时间: 2004-6-3 21:29:53

我可不可以晕一会儿?
作者: 梅子1983    时间: 2004-6-3 21:30:29

我的机子注删表老是被别人改动!现在又被别人给禁用了!问大家一下:怎么开通已经被禁用的注删表,然后把它禁用!不给别人打开!
作者: 卖女孩的火柴    时间: 2004-6-3 21:47:35

还原法:在DOS下
A盘或者C盘下:SCANREG/RESTORE回车就可以恢复注册表。      
   禁用注删表在到注册表编辑窗口中去
作者: viphawk2000    时间: 2004-6-3 21:48:57

我怎么什么也没看懂?!看来我也得去晕一下了。
作者: 梅子1983    时间: 2004-6-3 21:55:10

好像不行!我试过了!不是这么简单吧!
作者: 卖女孩的火柴    时间: 2004-6-3 21:56:35

如果注删表不是人为破坏的,是程序自己错了,这种方法可能不行!要用另外和一种恢复法!

要保存一个注删表文稿件才可以
作者: 梅子1983    时间: 2004-6-3 21:59:13

那就说啊!具体一点吧!
作者: 卖女孩的火柴    时间: 2004-6-3 22:05:28

说挺麻烦的,手都打酸了。劝你格式化。
作者: 卖女孩的火柴    时间: 2004-6-3 22:16:21

恢复方法:
1,将下列字段保存为一个扩展名为REG的注删表文件:
    REGEDIT4
[HKEY-CURRENT-USER/software/misrosft/windows/currentversion/policies/system]
   "disableregistrytools''=dword:00000000
2,保存文件后,双击该文件,将其导入注删表既可!
作者: 卖女孩的火柴    时间: 2004-6-3 22:21:40

禁用注删表的方法:
  在注删表编辑窗口的左窗口中依次打开:
[HKEY-CURRENT-USER/software/misrosft/windows/currentversion/policies/system]分支
然后新建DWORD值DISABLEREGISTRYTOOLS,并将键值设置为1
作者: 卖女孩的火柴    时间: 2004-6-3 22:24:53

备分注删表:在DOS下
  C盘下输入scanreg回车

star:creat  backups 备份
star:view   backups查看(restore还原)
作者: 梅子1983    时间: 2004-6-3 22:28:26

谢谢你了!不是你的朋友吗?改天你请他吃饭不就行了!我给钱了OK吧!
作者: 卖女孩的火柴    时间: 2004-6-3 22:32:07

不为这事我也会请他吃饭,请客只不过是聚会的借口罢了。钱虽不多,但自己还有。
作者: 梅子1983    时间: 2004-6-3 22:55:21

那好啊请吃的时候把我也算上啊!我想认识一下你这位朋友!可以吗?哦,忘记了你在安徽!
作者: 梅子1983    时间: 2004-6-3 23:04:26

有机会来宁波玩吧!我请你吃饭!
作者: 卖女孩的火柴    时间: 2004-6-3 23:06:35

早点睡觉。他是Jack,我没告诉他是你。
作者: 梅子1983    时间: 2004-6-3 23:09:00

谁?什么JACK?
作者: 卖女孩的火柴    时间: 2004-6-3 23:14:57

离开你的他
作者: 梅子1983    时间: 2004-6-3 23:22:21

真的吗?难道我真的逃不出他的生活吗?怎么又是他呢?你为什么找他呢?你为什么不欺骗我一次呢?
作者: 卖女孩的火柴    时间: 2004-6-3 23:23:13

让你说我们安徽人都是骗子么
作者: 梅子1983    时间: 2004-6-3 23:26:03

我宁愿你是个骗子!也不相信这是真的
作者: 卖女孩的火柴    时间: 2004-6-3 23:27:19

那就这么认为吧。




欢迎光临 海浩网论坛 (http://bbs.highot.net/) Powered by Discuz! X2