汇编实验-查表操作精要.docxVIP

  • 6
  • 0
  • 约4.1千字
  • 约 10页
  • 2017-05-07 发布于湖北
  • 举报
汇编实验-查表操作精要

汇编实验实验二、查表操作。查找0—9相应的平方原理:先存入了一些数据,让BX指向这些数据的首地址,然后根据AL(中的序号)查表转换指令,表的首地址置于BX中,AL中存放查找对象在表中的下标,所查找到的类容存放在AL中。下面有2个版本,一个是存放的十六进制,一个是存放的十进制。运行结果如下:版本一:(十六进制版,应运用的移位法,所以存放的是十六进制)DATAS SEGMENTTABLE DB 0H,1H,4H,9H,16H,25H,36H,49H,64H,81HINPUT DB 0DH,0AH,8 DUP(20H),Please press the Enter key to exit!Or Input a nummble(0~9):,0DH,0AH,$ ;0D为回车符,0A为换行符,20H 为空格符,这样使用,可使字符显示在一行的中间位置OUTERROR DB 0DH,0AH,8 DUP(20H),ERROR!$;0DH为回车键OVER DB 0DH,0AH,8 DUP(20H),THANKS,0DH,0AH,$ ANS DB 0AH,RESULT=$RESULT DB ? ;存放结果DATAS ENDSS SEGMENT STACK ;设置堆栈段,避免Link时的警告S ENDSCODES SEGMENT ;代码段 ASSUME CS:CODES,DS:DATAS,SS:SSTART: MOV AX,DATAS MOV DS,AX LEA DX,INPUT ;输出提示信息, MOV AH,9 ;9号功能是在屏幕上显示多于一个的字符串,但必须要以$作为结束标志. INT 21H ; MOV AH,1 ;从键盘输入一个字符 INT 21H CMP AL,0DH ;判断是否为回车键,若为则退出 JZ EXIT CMP AL,0 JB ERROR ;和数值0的ASCII码比较大小,若小于(JB),则转到ERROR处 CMP AL,9 JA ERROR ;和数值9的ASCII码比较大小,若大于(JA),则转到ERROR处 SUB AL,30H ;由ASCII码转换成数值,或者用(AND AL,0FH),以便后面查表使用 LEA BX,TABLE ;置数据指针,表的首地址置于BX中 XLAT ;查表转换指令,表的首地址置于BX中,AL中存放查找对象在表中的下标,所查找到的类容存放在AL中 MOV RESULT,AL ;保留一个结果的副本 LEA DX,ANS MOV AH,9 INT 21H ;输出回车符 MOV BL,RESULT MOV CL,4 ;位移的位数 SHR BL,CL ;逻辑右移4位,即将高半字节移到低半字节 OR BL,30H ;将十位上的数变成ASCII码 CMP BL,0 JZ NEXT1 ;若为0,只输出低位 JNZ NEXT2 ;若不为0,输出高位和低位 NEXT1:MOV BL,RESULT ;输出低位 AND BL,0FH ;与相与,只保留低半字节的类容 OR BL,30H ;个位上的数变成ASCII码 MOV AH,2H MOV DL,BL ;将要显示字符的ASCII码存到DL寄存器中,输出个位数 INT 21H JMP START NEXT2:MOV AH,2H ;输出高位 MOV DL,BL ;将要显示字符的ASCII码存到DL寄存器中,输出十位数 INT 21H MOV BL,RESULT ;输出低位 AND BL,0FH ;与相与,只保留低半字节的类容 OR BL,30H ;个位上的数变成ASCII码 MOV AH,2H MOV DL,BL ;将要显示字符的ASCII码存到DL寄存器中,输出个位数 INT 21H JMP STARTERROR:LEA DX,OUTERROR MOV AH,9 INT 21H

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档