回 帖 发 新 帖 刷新版面

主题:请高手帮忙改下我的程序,有点问题:(

要求是程序运行后 先显示:please input an integer
然后输入0-11的中的一个数 显示出它的平方数
自己做的问题太多了。。。。。


stack SEGMENT STACK
stack ENDS
DATA SEGMENT
STARTBUFF     DB        'please input an integer'
TABLE DB 0,1,4,9,16,25,36,49,64,81,100,121
 FACTOR       DB    100, 10, 1    
;STRRESULT    DB 31,32,33,"$"
STRRESULT    DB ?,?,?,"$"
RSLT DB ?
DATA ENDS
CODE SEGMENT
     ASSUME CS:CODE, DS:DATA, SS:stack
START: MOV AX,DATA
       MOV DS,AX
       MOV AH,00H
       INT 16H
       AND AL,0FH
       XOR BX,BX
       MOV BL,AL
       LEA SI,TABLE

   MOV AL,[SI+BX]
      ;MOV RSLT,AL


              LEA SI,STRRESULT
              LEA DI, FACTOR 
XOR DX,DX 
MOV BX,100 
;MOV AX, 3    
MOV CX, 3                        

AGAIN: DIV BYTE PTR[DI];AX除因子 
       ADD AL,30H;商加上30即可得到相应数字的ASCII码
       MOV BYTE PTR[SI],AL 
       INC SI;结果 
       INC DI;因子
       MOV  DX,CX
       MOV  CL,8
       SHR  AX,CL;将余数作为下一次的被除数
       MOV  CX,DX
       LOOP      AGAIN
       LEA  SI,STRRESULT       
bb:
        CMP     BYTE PTR [SI],'0'   ;不输出前面的0字符    
        JNE     print
        INC     SI                           
        LOOP    bb                            
print:        
MOV DX,SI
MOV AH,09h 
INT 21h                             
              
;MOV DL, [SI]
;MOV AH,02h 
;INT 21h                             
              
                 
       MOV AH,00H
       INT 16H
  
    MOV AH,4CH
       INT 21H
CODE ENDS
     END START

回复列表 (共1个回复)

沙发

关键就在任何把平方表里的数字按数字输出:也就是说要把其对应的ASCII码求出来:
本程序本人写了写,思路比较简单.关键是在把握输出: 
先把键盘扫描到的字符换为其对应的ASCII,然后在找到其对应的平方数,在把平方数换为ASCII输出,就OK了
如:121  为11 的平方,先把1,2,3换为ASCII,在把各个输出(调用INT 21H):

我来回复

您尚未登录,请登录后再回复。点此登录或注册