山东大学汇编语言上机实验 - 实验五 - 图文

发布时间 : 星期五 文章山东大学汇编语言上机实验 - 实验五 - 图文更新完毕开始阅读

;(digit is now in AX)

;multiply number in BX by 10 decimal. xchg ax,bx mov cx,10d mul cx xchg ax,bx

;add digit in AX to number in BX add bx,ax jmp newchar exit1: ret decibin endp

;-------------------------------------------------------------------------- binidec proc near

;procedure to convert binary number in BX to decimal ;on console screen push bx push cx push si push di mov cx,100d call dec_div mov cx,10d call dec_div mov cx,1d call dec_div pop di pop si pop cx pop bx ret

binidec endp

;-------------------------------------------------------------------------- dec_div proc near

;sub_subroutine to divide number in BX yb number in CX ; print quotient on screen mov ax,bx mov dx,0 div cx mov bx,dx mov dl,al

;print the contents of DL on screen add dl,30h mov ah,02h int 21h

ret

dec_div endp

;-------------------------------------------------------------------------- crlf proc near

;print carriage return and linefeed mov dl,0ah mov ah,02h int 21h ; mov dl,0dh mov ah,02h int 21h ; ret crlf endp

;-------------------------------------------------------------------------- prognam ends

;************************************************************************** end start 程序框图如下:

实验截图如下:

实验总结:

在复杂的程序设计中,采用模块化结构可以划分功能、分界程序,使得程序有复杂变简单,变清晰。主程序和子程序之间嵌套使用,使得写代码时思路更清楚明白,读代码时方便快捷

清晰明了。这点跟高级编程语言类似。而此程序中变量p可以跟踪并控制输入的人数、输名字要预留缓存区、十进制码要和二进制码间相互转换,这些又体现了编程低级语言的特点。学习汇编语言,重要的事掌握如何通过汇编指令和程序来控制计算机各个组成部件工作,完成一系列任务。因此,学习汇编用语言与学习高级语言的不同之处是要学习如何深入到计算机的内部进行控制。

通过这次实验,加深了我对汇编语言的理解。每一步的输入、存储、转换、输出,都需要一条条的汇编指令执行。而且每一步都有自己的源和目标的地址,每个数据都有自己的存储空间和地址,我们可以很清晰的“跟踪”每一个数据的变化和地址的转移。实验体会:

在复杂的程序设计中,采用模块化结构可以划分功能、分界程序,使得程序有复杂变简单,变清晰。主程序和子程序之间嵌套使用,使得写代码时思路更清楚明白,读代码时方便快捷清晰明了。这点跟高级编程语言类似。而此程序中变量p可以跟踪并控制输入的人数、输名字要预留缓存区、十进制码要和二进制码间相互转换,这些又体现了编程低级语言的特点。学习汇编语言,重要的事掌握如何通过汇编指令和程序来控制计算机各个组成部件工作,完成一系列任务。因此,学习汇编用语言与学习高级语言的不同之处是要学习如何深入到计算机的内部进行控制。

通过这次实验,加深了我对汇编语言的理解。每一步的输入、存储、转换、输出,都需要一条条的汇编指令执行。而且每一步都有自己的源和目标的地址,每个数据都有自己的存储空间和地址,我们可以很清晰的“跟踪”每一个数据的变化和地址的转移。

2.7 计算工资scremp

编写一个程序,接受用户输入的工作时间及工资率,显示计算得到的工资数。

本程序有三个部分组成,输入工作时间和工资率,计算工资;显示工资值。在输入输出部分,与例2.6一样,必须考虑自负与数字的装换,以及十进制换二进制,二进制换十进制的问题。除此之外,还应注意到本例中的输入数可能是小数。在这里并不需要使用浮点数格式来进行计算,只是在计算中必须处理小数。我们采用在接受输入数字是记录小数点后的位数,并把两个输入数的小数点后位数之和存放在nodec单元当中。在计算工资的乘法中,并不考虑小数点后的存在,而输出的工资数又只取出小数点后的两位数,因此我们用SHIFT单元记录移位因子,用ADJUST单元记录舍入值。对于不同的NODEC可以分以下情况进行处理。

1.NODEC>6

我们知道,对于16位整数而言,及其允许的最大数是65535,对于NODEC>6的数,移位因子将>=10000,该数已经超过机器允许的范围,因此本例限制NODEC的值必须<=6.如果NODEC>6,则作为溢出处理,此时将输出值变为0。

2.NODEC=3~6

此时移位因子 SHIFT=(10)^nodec—2 舍入值 ADJUST=1/2SHIFT

例如:输入工作时间为8.52,工资率为10.25,则乘机为

Product=852X1025=873300

移位因子为 shift=(10)^nodec—2

联系合同范文客服:xxxxx#qq.com(#替换为@)