汇编语言作业(七)

简介: 班级:  计算机14-1  姓名:  许恺    学号:  2014011329日期: 2016.4.29          一、编写程序1.从键盘输入一个不超过8的个位数,计算该数的阶乘,并以十进制制式输出。

班级:  计算机14-1  姓名:  许恺    学号:  2014011329日期: 2016.4.29          

一、编写程序

1.从键盘输入一个不超过8的个位数,计算该数的阶乘,并以十进制制式输出。

要求:

1)输入数据在主程序中实现;

2)计算阶乘的功能用子程序实现,子程序的名字为:fac;

3)以十进制形式输出结果的功能用子程序实现,子程序的名字为:output;

4)各子程序通过寄存器传递参数;

5)输出格式要美观,要有适当的提示。

1)程序清单:

data segment

 s1 db 'please input an integer between 0 to 8:$'

 s2 db 'its factorial=$'

data ends

stack segment stack

 dw 30 dup(?)

stack ends

code segment

 assume cs:code,ds:data,ss:stack

 main proc far

start:

   mov ax,data

   mov ds,ax

   lea dx,s1

   mov ah,09h

   int 21h

   mov ah,01h

   int 21h

   mov dh,al

   mov dl,0dh

   mov ah,02h

   int 21h

   mov dl,0ah

   mov ah,02h

   int 21h

   mov al,dh

   sub al,30h

   mov ah,0

   call fac

   mov bx,ax

   lea dx,s2

   mov ah,09h

   int 21h

   mov ax,bx

   mov dx,0

   call output

   mov ah,4ch

   int 21h

   fac proc near

     mov cl,al

     dec cl

l1:  mul cx

     loop l1

     ret

   fac endp

   output proc near

     mov cx,0000h

l3:  mov bx,000ah

     cmp ax,0

     jbe l2

     div bx

     push dx

     mov dx,0000h

     inc cl

     jmp l3

l2:  pop dx

     add dx,0030h

     mov ah,02h

     int 21h

     loop l2

     ret

   output endp

 main endp

code ends

end start

 

2)运行结果(截图):

 

 

二、编程体会

其实感觉堆栈段不用编写,因为之前不写也行,开始已经写好了,后来知道要有提示语句,又加输出字符串时就出错了,在压栈的时候出现了死循环,是用dx输出字符串的时候出了问题,最后是重新把dx赋0才解决,这次更加理解了堆栈的使用,以后会用的更加的顺手和频繁。

相关文章
汇编语言作业(三)计算这三个数的平均值
班级:  计算机14-1   姓名: 许恺   学号: 2014011329  日期: 2016.4.1           一、编写程序 1.设有三个无符号的个位数,计算这三个数的平均值(截尾取整),并将这个平均值显示在屏幕上。
2251 0
汇编语言作业(四)在屏幕上显示N个星号
班级:  计算机14-1  姓名: 许恺     学号: 2014011329  日期: 2016.4.8           一、编写程序 1.从键盘输入一个十进制个位数N(1-9),然后在屏幕上显示N个星号。
1015 0
汇编语言作业(五)
班级:  计算机14-1   姓名: 许恺  学号: 2014011329 日期: 2016.4.22           一、编写程序 1.设有字数组X、Y和Z,各有10个元素,计算: Z0=X0-Y0   Z1=X1-Y1  Z2=X2-Y2   Z3=X3+Y3   Z4=X4-Y4   Z5=X5-Y5   Z6=X6-Y6   Z7=X7+Y7  Z8=X8-Y8   Z9=X9-Y9 要求:X、Y两个数组的数均为两位十进制数,直接放在数据段中,无需从键盘输入,且两数相加或相减之后是一位或两位数(有可能是负数)。
1233 0
汇编语言作业(六)
班级:  计算机14-1 姓名: 许恺   学号: 2014011329 日期: 2016.4.24     一、编写程序 1.从键盘输入一个长度不超过50的字符串,然后将该字符串原样输出。 要求:用A号功能调用输入,用9号功能调用输出。
1025 0
汇编语言作业(2)输入两个位数,计算其乘积,并把乘积显示出来
班级:  计算机14-1   姓名: 许恺     学号: 2014011329  日期: 2016.3.29           一、编写程序 从键盘输入两个位数,计算其乘积,并把乘积显示出来(乘积用两位十进制形式显示,例如:2*3的结果是06,6*9的结果是54) 提示:利用1号功能调用从键盘输入的都是字符,例如,输入6,在AL中得到的是36H,要减掉30h才能得到数值6。
1889 0
|
6月前
|
存储 Unix 编译器
汇编语言----X86汇编指令
汇编语言----X86汇编指令
210 2
|
27天前
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
|
27天前
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
118 0
|
6月前
|
存储 机器学习/深度学习 移动开发
汇编语言指令系列
汇编语言指令系列
586 0
几组汇编指令的比较
几组汇编指令的比较