yeruo 2015-06-18 12:44 采纳率: 25%
浏览 2577

MOV AL,INPUT+2 ;这里为什么+2,谢谢

;功能:输入一个0~19的整数,输出其平方值

;作者:KDF5000

;时间:2012.11.9

.386

DATA SEGMENT USE16

SQUARE DW 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361 ;存入0~19的平方值便于查询

INPUT DB 8

DB ?

DB 8 DUP('$') ;次缓冲区用于存放输入的值

OUTPUT DB '$' ;此区存放平方值的输出

ERROR DB 'your input is incorrect!$'

MESSAGE DB 'please enter a number(0~19):$'

RESULT DB 0DH,0AH,' the result is:$'

EXITMES DB 0DH,0AH,'thank you for your use!',0DH,0AH,'$'

HUANHANG DB 0DH,0AH,'$'

DATA ENDS

STACK SEGMENT USE16 STACK

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT USE16

ASSUME DS:DATA,CS:CODE,SS:STACK

BEGIN:

MOV AX,DATA

MOV DS,AX

 ;输出提示信息  
  LEA   DX,MESSAGE  
  MOV   AH,9  
  INT   21H  

  ; 输入数值  
  LEA  DX,INPUT  
  MOV  AH,10  
  INT  21H  

  ;如果输入空格则推出程序  
  MOV   AL,INPUT+2  ;***********************这里为什么+2
  CMP   AL,20H  
  JE    EXIT  

  ;取出输入的数值  
  LEA   SI,INPUT+2  
  MOV   AX,0  
  MOV   BL,10  
  MOV   CL,INPUT+1    ;记录循环的次数  

  ;将输入的值放到AX  

LOPA: MOV DL,[SI]

DEC CL

SUB DL,30H

MUL BL

ADD AX,DX

INC SI

CMP CL,0

JE NEXT

JMP LOPA

NEXT:

;如果输入的数字大于十九或者小于小于0报错

CMP AX,19

JG ERROR1

CMP AX,0

JB ERROR1

  MOV   BP,AX              ;将输入的数据作为变量  
  MOV   AX,SQUARE[EBP*2]   ;此时AX存放平方值  

  MOV   CL,10   ;设置除数  
  MOV   SI,OFFSET OUTPUT  

LOPB: ;次循环为把已经存入的平方值转换为十进值输出

DEC SI

DIV CL

ADD AH,30H

MOV [SI],AH

MOV AH,0

CMP AL,0

JNE LOPB

;输出结果提示

LEA DX,RESULT

MOV AH,9

INT 21H

;输出十进制平方值

MOV DX,SI

MOV AH,9

INT 21H

;输出换行

LEA DX,HUANHANG

MOV AH,9

INT 21H

;跳到开始继续输入

JMP BEGIN

ERROR1:

LEA DX,HUANHANG

MOV AH,9

INT 21H

  LEA  DX,ERROR  
  MOV   AH,9  
  INT   21H  

  LEA  DX,HUANHANG  
  MOV   AH,9  
  INT   21H  

  JMP   BEGIN  

EXIT:

LEA DX,EXITMES ;输出退出信息

MOV AH,9

INT 21H

  MOV   AH,4CH  
  INT   21H  

CODE ENDS

END BEGIN

  • 写回答

2条回答 默认 最新

  • yeruo 2015-06-18 12:44
    关注

    ;如果输入空格则推出程序

    MOV AL,INPUT+2 ;***********************这里为什么+2
    CMP AL,20H

    JE EXIT

    这里为什么+2啊。。。谢谢啦~~~

    评论

报告相同问题?

悬赏问题

  • ¥15 flask项目,怎么使用AJAX传数据库数据到echarts图表的data里,实现异步加载数据。
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?