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

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 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试