第一个asm……好囧

这真是一门可怕的学科 TAT

 

编写程序实现:从键盘输入0~9中任意一个自然数,将其平方值在屏幕上显示出来(要求使用查表法)。

 

于是,

  1. DATAS SEGMENT
  2.     INFOR1 DB 'please input the number:$'
  3.     INFOR2 DB 0AH, 0DH, 'the result is:$'
  4.     SQUTAB DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
  5.     SQUBUF DB ?
  6.     STRING DB 2 DUP (30h ) , '$'
  7. DATAS ENDS
  8.  
  9. CODES SEGMENT
  10.     ASSUME CS:CODES, DS:DATAS
  11. START:
  12.     MOV AX,DATAS
  13.     MOV DS, AX
  14.    
  15.     MOV DX, OFFSET INFOR1                        ;显示INFOR1内容
  16.     MOV AH, 9
  17.     INT 21H
  18.    
  19.     MOV AH, 1                        ;输入数字
  20.     INT 21H
  21.     SUB AL,30H
  22.    
  23.     MOV  BX, OFFSET SQUTAB    ;读入表
  24.     XLAT                                          ;查询
  25.     MOV SQUBUF, Al
  26.    
  27.     MOV DX, OFFSET INFOR2                        ;显示INFOR2内容
  28.     MOV AH, 9
  29.     INT 21H
  30.    
  31.     MOV AX, 0
  32.     MOV AL,SQUBUF
  33.     MOV BL, 10
  34.     DIV BL
  35.     ADD STRING [ 1 ], AH
  36.     ADD STRING [ 0 ], AL
  37.    
  38.     LEA DX,STRING
  39.     MOV AH, 09H
  40.     INT 21H
  41.    
  42.     MOV AH,4CH
  43.     INT 21H
  44. CODES ENDS
  45.     END START
然后老师讲了一下,发现有符合我们现在学到的方法…… - -:
  1. DATAS SEGMENT
  2.     INFOR1 DB 'please input the number:$'
  3.     INFOR2 DB 0AH, 0DH, 'the result is:$'
  4.     SQUTAB DB 00, 01, 04, 09, 16, 25, 36, 49, 64, 81
  5.     SQUBUF DB ?
  6. DATAS ENDS
  7.  
  8. CODES SEGMENT
  9.     ASSUME CS:CODES, DS:DATAS
  10. START:
  11.     MOV AX,DATAS
  12.     MOV DS, AX
  13.    
  14.     MOV DX, OFFSET INFOR1                        ;显示INFOR1内容
  15.     MOV AH, 9
  16.     INT 21H
  17.    
  18.     MOV AH, 1                        ;输入数字
  19.     INT 21H
  20.     SUB AL,30H
  21.     MOV CL, AL
  22.    
  23.     MOV DX, OFFSET INFOR2                        ;显示INFOR2内容
  24.     MOV AH, 9
  25.     INT 21H
  26.    
  27.     MOV BX, OFFSET SQUTAB
  28.     MOV AH, 0
  29.     MOV AL, CL
  30.     XLAT
  31.     AAM
  32.    
  33.     MOV BH, AL
  34.     ADD AH,30H
  35.     MOV DL, AH
  36.     MOV AH, 2
  37.     INT 21H
  38.    
  39.     MOV AL, BH
  40.     ADD AL,30H
  41.     MOV DL, AL
  42.     MOV AL, 2
  43.     INT 21H
  44.    
  45.     MOV AH,4CH
  46.     INT 21H
  47. CODES ENDS
  48.     END START
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值