需求:从键盘上输入一个10进制数字,查表求键入数字的平方值 

实现思路:定义数据段 一个提示信息,使用db字节来存储 并以'$'符号作为结束标志,定义一个变量存储 0-9对应的平方值

 先赋值代码段段地址和偏移量地址,调用dos9号功能 显示以$结束的标志字符串,提示用户输入.接着调用dos1号功能 接收用户输入的,并在屏幕上显示。这里用and(与) 进行相与之后获取了键盘上输入的值,将存储0-9对应的平方值的变量的获取到对应的偏移地址。ah 高位清零 这时最主要的一点 就是 table中 变量的对应的数的平方的地址 也是该数。例如: 3 所对应的就是9 所以偏移地址就是 table的偏移地址加上用户键盘输入的数字。就是概述的偏移地址。使用间接寻址方式,获取到该数的平方数,程序结束。

;需求:从键盘上输入一个10进制数字,查表求键入数字的平方值 存入al寄存器中 并显示有关的提示信息
;实现思路:在程序的数据段,先给出数字0-9的平方值 逐个存入table开始的内存中 形成表格
;代码段由3部分组成,显示提示信息 等待键入数字 查表求键入数字的平方值 并将结果存入al中
data segment
    table db 0,1,4,9,16,25,36,49,64,81 ;数字 0-9的平方值
    buf db 'please input a number (0-9):',0dh,0ah,'$'; 提示信息  ;汇编中 定义字符串要使用db字节类型      0dh 回车 0ah换行
data ends 

code segment 
    assume cs:code,ds:data
   start:mov ax,data
         mov ds,ax                 ;设置ds
         mov dx,offset buf         ;设置dx 使字符串首地址=ds:dx
         mov ah,9h;                ;dos 9号 功能调用 显示以$结尾的字符串
         int 21h                   ;显示提示信息
         
         mov ah,01                 ;dos 1  从键盘输入字符 并在屏幕上显示 
         int 21h                   ;al-键入数字的ascll码
         and al,0fh                ;al-截下数字值  
         
         mov bx,offset table       ;bx指向头地址table
         mov ah,0                  ;ax寄存器高字节清0
         add bx,ax                 ;表头地址+键入数字al 结果存入bx
         mov al,[bx]               ;查表求得平方值
         
         mov ax,4c00h             ;程序结束
         int 21h                   ;返回dos
         
      code ends
     end start