输入一个数n,打印出2的n次方
 ; 有效输入 n=0~24
 ; 用MASM6.11编译器编译通过
 ; 编译方法: masm /l %1.asm
 ; link /tiny %1.obj
 ;
 code segment
 ASSUME cs:code,ds:code
 .386P
 ORG 100h
 START:
 push cs
 pop ds
again:
 mov dx,offset string ;显示提示
 mov ah,9
 int 21h
 xor bp,bp ;BP清0
 mov cx,2
input:
 mov ah,0
 int 16h ;接收一个字符
 cmp ah,1 ;Esc退出程序
 jz exit
 cmp al,0dh ;回车结束输入
 jz ok
 cmp al,'0' ;比0小重输
 jb input
 cmp al,'9' ;比9大重输
 ja input
 mov ah,0eh ;显示有效输入
 int 10h
 and al,0fh ;化为HEX
 cbw
 xchg bp,ax
 mov bx,10
 mul bx
 add bp,ax
 loop input ;接收下一字符
ok: call hex2asc
 mov si,offset result
 test bp,bp
 jnz k2
 mov word ptr [si],1 ;2^0=1
 mov word ptr [si+2],0
 jmp crt
k2: cmp bp,1
 jnz k3
 mov word ptr [si],2 ;2^1=2
 mov word ptr [si+2],0
 jmp crt
k3: cmp bp,24
 ja again
 dec bp
 mov cx,bp
 finit
 fld num ; 2 入栈
 @mul:
 fimul num ;2^n
 loop @mul
 fstp result ;从栈上取出结果到result
crt:
 mov dx,offset message
 mov ah,9
 int 21h ;显示结果式
 mov si,offset result
 call show ;显示 10 进制结果
 jmp again
exit:
 mov ah,4ch
 int 21h
 
 show: ;将双字Hex化为 N 进制并显示
 mov bx,N
 xor cx,cx
 Q0:
 xor dx,dx
 mov ax,[si+2]
 div bx
 mov [si+2],ax
 mov ax,[si]
 div bx
 mov [si],ax
 or dx,0e30h
 inc cx
 push dx
 cmp ax,0
 jnz Q0
 Q1:pop ax
 int 10h
 loop Q1
 ret
hex2asc: ;将Hex(0~99)化为十进制
 mov ax,bp
 aam
 or ax,3030h
 xchg ah,al
 mov Y,ax
 ret

string db 0dh,0ah,9,'Input n=(0~24):$'
 message db 13,10,9,'2^'
 Y dw ?
 db '= $'
 num dd 2 ;底数
 result dd ? ;幂
 N dw 10
 CODE ENDS
 END START

输入一个数n,然后打印出2的n次方相关推荐

  1. java用流体加减乘除_任意输入两个数,完成加法、减法、乘法、除法运算!(加减乘除运算分别定义四个方法)_学小易找答案...

    [简答题]编写程序实现菜单设计 [简答题]一层平面图 [简答题]编写一个程序实现大小写字母转换 [简答题]利用循环语句输出一个五行的等腰三角形,如下图 [简答题]编写一个程序实现交换两个变量的数值. ...

  2. C语言编程>第三周 ⑥ 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    例题:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 代码如下: /*程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个 ...

  3. js输入两个数,求最小公倍数和最大公约数

    如何通过js输入两个数,求最小公倍数和最大公约数,我们首先来了解一下最小公倍数和最大公约数的定义: 定义:公倍数是指在两个或两个以上的自然数中,如果它们有相同的倍数,这些倍数就是它们的公倍数,其中除0 ...

  4. (C++)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。

    #include<cstdio> //输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.要求用3个函数实现,分别为输入10个数.进行处理.输出10个数.要求使用指针 ...

  5. ACMNO.41C语言-数字调序 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数

    题目描述 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图. 写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数. 输入 输入数据的个数n n个整数 移动的位置m ...

  6. ACMNO.37 C语言-数字交换 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。

    题目描述 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换. 写三个函数: ①输入10个数:②进行处理:③输出10个数. 输入 10个整数 输出 整理后的十个数,每个数后跟 ...

  7. ACMNO.30 C语言-宏交换 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。

    题目描述 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参.输出已交换后的两个值. 输入 两个数,空格隔开 输出 交换后的两个数,空格隔开 样例输入 1 2 样例输出 2 ...

  8. ACMNO.23 C语言-素数判定 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime

    题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 prime 来源/ ...

  9. ACMNO.22 C语言-公约公倍2 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 输入 两个数 输出 最大公约数 最小公倍数

    题目描述 写两个函数,分别求两个整数的最大公约数和最小公倍数, 用主函数调用这两个函数,并输出结果两个整数由键盘输入. 输入 两个数 输出 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 3 ...

最新文章

  1. 《Mysql数据库及应用》_MySQL数据库及应用
  2. 获取文件的MIME类型
  3. mybatis判断集合为空或者元素个数为零
  4. 源码分析Thread
  5. 一图读懂马云与阿里20年:互联网巨头是如何养成的?
  6. 第二周linux微职位
  7. 从SQL过渡至MongoDB查询对照表
  8. ZOJ 1242 Carbon Dating
  9. Cannot uninstall ‘llvmlite‘. It is a distutils installed project and thus we cannot accurately deter
  10. 软件测试---UI界面测试点
  11. flv.js构建及下载
  12. xargs -i参数详解
  13. JAVA检验密码复杂度+随机生成6位密码
  14. 网站频繁抓取IP被封
  15. WinFormDEV知识小结
  16. TOPSIS法笔记(优劣解距离法)
  17. Vegas使用技巧—— 如何实现三维立体调整?
  18. 全志a31 支持电容屏触摸方法
  19. 桌面美化--鼠标指针
  20. 金蝶ERP实现产品入库及委外加工冲减生产现场虚仓毛坯数(修正虚仓不能保存)...

热门文章

  1. 初入职场,菜鸟北漂记
  2. 【董天一】IPFS的竞争对手们(一)
  3. ABAP-SAP 账号批量创建分配权限程序
  4. linux ubuntu bionic,在Ubuntu 18.04 Bionic Beaver Linux上安装和设置KVM
  5. 算法训练 Beaver's Calculator (蓝桥杯)
  6. 11张网络安全思维导图,快收藏!
  7. 《朱子治家格言》 清•朱柏庐
  8. VMware 笔试题目:猫和老鼠玩象棋
  9. 隔离,隔离,再隔离!
  10. ROS的四种通信架构