第一个asm……好囧

本文介绍了一个简单的汇编语言程序,该程序通过键盘接收0到9之间的数字输入,并利用预先定义好的平方表来查找并显示该数字的平方值。程序首先提示用户输入数字,然后读取输入、进行必要的数值转换,接着查询平方表获取结果,最后将结果显示在屏幕上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这真是一门可怕的学科 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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值