JEFFONE 发表于 2007-6-26 23:18

[求助] 将两个十位数相乘

<P>DATA    SEGMENT<br>DATA1   DB 32H,39H,30H,35H,34H<br>DATA2   DB 33H<br>RESULT  DB 6 DUP(00H)<br>DATA    ENDS<br>STACK   SEGMENT STACK'STACK'<br>STA     DB 30 DUP(?)<br>TOP     EQU  LENGTH STA<br>STACK   ENDS<br>CODE    SEGMENT<br>        ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA<br>START:  MOV  AX,DATA<br>        MOV  DS,AX<br>        MOV  AX,STACK<br>        MOV  SS,AX<br>        MOV  AX,TOP<br>        MOV  SP,AX<br>        MOV  SI,OFFSET DATA2<br>        MOV  BL,[SI]<br>        AND  BL,00001111B<br>        MOV  SI,OFFSET DATA1<br>        MOV  DI,OFFSET RESULT<br>        MOV  CX,05<br>LOOPL:  MOV  AL,[SI]<br>        AND  AL,00001111B<br>        INC  SI<br>        MUL  BL<br>        AAM<br>        ADD  AL,[DI]<br>        AAA<br>        ADD  [DI],AL<br>        INC  DI<br>        MOV  [DI],AH<br>        LOOP LOOP1<br>        MOV  CX,06<br>        MOV  SI,OFFSET RESULT+5<br>DISPL:  MOV  AH,02<br>        MOV  DL,[SI]<br>        ADD  DL,30H<br>        INT  21H<br>        DEC  SI<br>        LOOP DISPL<br>        MOV  AX,4C00H<br>        INT  21H<br>CODE    ENDS<br>        END   START<br>        </P>
<P><br>但出左個loop1錯暨msg<br>error jeff.asm(34) undefined symbol:loop1[em08]<br>請教各位高人指點<br></P>

[align=right][color=#000066][此贴子已经被作者于2007-6-26 23:25:01编辑过][/color][/align]

菜鸟上路 发表于 2007-6-27 08:51

把LOOPL改成LOOP1

JEFFONE 发表于 2007-6-27 13:14

<P>唔多明.........RUN 唔到</P>

herbert_1987 发表于 2007-6-27 13:43

<FONT color=#f73809>LOOPL</FONT>:  MOV  AL,[SI]<BR>        AND  AL,00001111B<BR>        INC  SI<BR>        MUL  BL<BR>        AAM<BR>        ADD  AL,[DI]<BR>        AAA<BR>        ADD  [DI],AL<BR>        INC  DI<BR>        MOV  [DI],AH<BR>        LOOP <FONT color=#ff3300>LOOP1<BR></FONT>

JEFFONE 发表于 2007-6-28 01:08

回复:(herbert_1987)LOOPL: MOV AL,[SI] ...

<P>請教...如果改成手動輸入兩個十位數應該點改....唔知點樣改</P>

herbert_1987 发表于 2007-6-28 01:11

用 02中断 循环输入单个字符,<BR>把字符处理成数字.

JEFFONE 发表于 2007-6-28 22:41

<P>應該放系邊個位.......點处理成数字...可以試一次個程序比我睇睇ma</P>

herbert_1987 发表于 2007-6-28 22:58

data segment<BR>    n  db    0<BR>data    ends<BR><BR>code segment<BR>  .....<BR><BR>; 输入十位的数<BR> mov    ah,    02<BR> int    21h<BR> sub    al,    30h ; 把字符变成相应的数字<BR> mov    cl,     10<BR> div    cl         ; <BR> mov    bl,    n<BR> add    bl,    al<BR> mov    n,    bl<BR><BR> ;输入个位的数<BR> mov    ah,    02<BR> int    21h<BR> sub    al,    30h<BR> mov    bl,    n<BR> add    bl,    al<BR> mov    n,    bl<BR> ;n 就是所输入的十位数<BR>; 这里没用循环

JEFFONE 发表于 2007-6-28 23:59

<P>可以試一次運行到ga程序的全部滙編碼比我ma&gt;<BR>同埋想問下系masm32點解之前run 的progrome.唔得ga</P>

herbert_1987 发表于 2007-6-29 00:04

<P>无呀, 自己写啦.<BR>用masm32写中断好似吴得嘎.</P>

JEFFONE 发表于 2007-6-29 11:52

回复:(JEFFONE)[求助] 将两个十位数相乘

我新手來GA....菜鳥一名....可以幫我試調成輸入兩個十進制數

herbert_1987 发表于 2007-6-29 12:03

定义两个变量:<BR> sum  dw  0<BR> n  dw     0;<BR><BR>输入一个数字字符 -&gt; 转换成数字 -&gt; 存放于 n 中 -&gt; sum = sum * 10 + n;<BR>再输入一个 -&gt; 转换成数字 -&gt; 存放于 n 中 -&gt; sum = sum * 10 + n;<BR>再来一个......<BR>

爱以走远 发表于 2007-6-29 17:34

<DIV class=quote><B>以下是引用<U>herbert_1987</U>在2007-6-28 22:58:46的发言:</B><BR>data segment<BR>    n  db    0<BR>data    ends<BR><BR>code segment<BR>  .....<BR><BR>; 输入十位的数<BR>mov    ah,    02<BR>int    21h<BR>sub    al,    30h ; 把字符变成相应的数字<BR>mov    cl,     10<BR>div    cl         ; <BR>mov    bl,    n<BR>add    bl,    al<BR>mov    n,    bl<BR><BR>;输入个位的数<BR>mov    ah,    02<BR>int    21h<BR>sub    al,    30h<BR>mov    bl,    n<BR>add    bl,    al<BR>mov    n,    bl<BR>;n 就是所输入的十位数<BR>; 这里没用循环</DIV>
<P>恩<BR>   不过最好用循环  <BR>     因为你根本就不知道输入几位数   </P>

页: [1]

编程论坛