输入一个数n,然后打印出2的n次方
输入一个数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次方相关推荐
- java用流体加减乘除_任意输入两个数,完成加法、减法、乘法、除法运算!(加减乘除运算分别定义四个方法)_学小易找答案...
[简答题]编写程序实现菜单设计 [简答题]一层平面图 [简答题]编写一个程序实现大小写字母转换 [简答题]利用循环语句输出一个五行的等腰三角形,如下图 [简答题]编写一个程序实现交换两个变量的数值. ...
- C语言编程>第三周 ⑥ 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
例题:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 代码如下: /*程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个 ...
- js输入两个数,求最小公倍数和最大公约数
如何通过js输入两个数,求最小公倍数和最大公约数,我们首先来了解一下最小公倍数和最大公约数的定义: 定义:公倍数是指在两个或两个以上的自然数中,如果它们有相同的倍数,这些倍数就是它们的公倍数,其中除0 ...
- (C++)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。要求用3个函数实现,分别为输入10个数、进行处理、输出10个数。要求使用指针的方法进行处理。
#include<cstdio> //输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.要求用3个函数实现,分别为输入10个数.进行处理.输出10个数.要求使用指针 ...
- ACMNO.41C语言-数字调序 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数
题目描述 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图. 写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数. 输入 输入数据的个数n n个整数 移动的位置m ...
- ACMNO.37 C语言-数字交换 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
题目描述 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换. 写三个函数: ①输入10个数:②进行处理:③输出10个数. 输入 10个整数 输出 整理后的十个数,每个数后跟 ...
- ACMNO.30 C语言-宏交换 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
题目描述 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参.输出已交换后的两个值. 输入 两个数,空格隔开 输出 交换后的两个数,空格隔开 样例输入 1 2 样例输出 2 ...
- ACMNO.23 C语言-素数判定 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime
题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 prime 来源/ ...
- ACMNO.22 C语言-公约公倍2 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 输入 两个数 输出 最大公约数 最小公倍数
题目描述 写两个函数,分别求两个整数的最大公约数和最小公倍数, 用主函数调用这两个函数,并输出结果两个整数由键盘输入. 输入 两个数 输出 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 3 ...
最新文章
- 《Mysql数据库及应用》_MySQL数据库及应用
- 获取文件的MIME类型
- mybatis判断集合为空或者元素个数为零
- 源码分析Thread
- 一图读懂马云与阿里20年:互联网巨头是如何养成的?
- 第二周linux微职位
- 从SQL过渡至MongoDB查询对照表
- ZOJ 1242 Carbon Dating
- Cannot uninstall ‘llvmlite‘. It is a distutils installed project and thus we cannot accurately deter
- 软件测试---UI界面测试点
- flv.js构建及下载
- xargs -i参数详解
- JAVA检验密码复杂度+随机生成6位密码
- 网站频繁抓取IP被封
- WinFormDEV知识小结
- TOPSIS法笔记(优劣解距离法)
- Vegas使用技巧—— 如何实现三维立体调整?
- 全志a31 支持电容屏触摸方法
- 桌面美化--鼠标指针
- 金蝶ERP实现产品入库及委外加工冲减生产现场虚仓毛坯数(修正虚仓不能保存)...