[求助] 将两个十位数相乘
<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]
回复:(herbert_1987)LOOPL: MOV AL,[SI] ...
<P>請教...如果改成手動輸入兩個十位數應該點改....唔知點樣改</P> 用 02中断 循环输入单个字符,<BR>把字符处理成数字. <P>應該放系邊個位.......點处理成数字...可以試一次個程序比我睇睇ma</P> 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>; 这里没用循环 <P>可以試一次運行到ga程序的全部滙編碼比我ma><BR>同埋想問下系masm32點解之前run 的progrome.唔得ga</P> <P>无呀, 自己写啦.<BR>用masm32写中断好似吴得嘎.</P>回复:(JEFFONE)[求助] 将两个十位数相乘
我新手來GA....菜鳥一名....可以幫我試調成輸入兩個十進制數 定义两个变量:<BR> sum dw 0<BR> n dw 0;<BR><BR>输入一个数字字符 -> 转换成数字 -> 存放于 n 中 -> sum = sum * 10 + n;<BR>再输入一个 -> 转换成数字 -> 存放于 n 中 -> sum = sum * 10 + n;<BR>再来一个......<BR> <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]
