山东大学汇编语言上机实验——实验五Word格式文档下载.doc
- 文档编号:13088477
- 上传时间:2022-10-04
- 格式:DOC
- 页数:29
- 大小:2.77MB
山东大学汇编语言上机实验——实验五Word格式文档下载.doc
《山东大学汇编语言上机实验——实验五Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《山东大学汇编语言上机实验——实验五Word格式文档下载.doc(29页珍藏版)》请在冰豆网上搜索。
各个成绩之间用逗号隔开,最后以回车符号结束。
把一个班的学生成绩存入grade数组。
接受一个班的学生成绩。
调用子模块decibin把键盘输入的一个十进制数转换为二进制数。
调用子模块crlf完成回车,换行功能。
3.模块名:
rankp
从grade数组取得一个班的学生成绩。
以学号为序计算出该班每个学生的名次存入rank数组。
计算一个班的学生成绩。
算法为:
一个学生的名次等于成绩高于该生的学生人数加1.
4,。
模块名;
output
把rank数组取得一个班的学生名次。
把一个班的学生名次以学号为序在总端上显示出来。
先是一个班的学生名次。
5:
模块名:
decilin
从键盘输入一个十进制数。
把该数转换成二进制数并存入BX寄存器中。
从键盘输入一个十进制数转换成二进制数并存入BX寄存器中。
6.模块名:
crlf
向终端发出回车换行符。
完成一次回车换行操作。
7.模块名:
binidec
从BX寄存器取得一个二进制数。
在终端屏幕显示一个十进制数。
把BX寄存器中的二进制数转换为十进制数,并在终端显示出来。
调用子模块DCE_DIV用来作除法运算并显示字符。
8.模块名:
dec_div
从BX寄存器中的二进制数除以相应的十的幂,并在屏幕显示一位商。
余数保存在BX寄存器中。
有了以上的层次图及模块说明,对程序的全貌有了基本了解。
在图2.18中,我们给出了除rankp以外的其余各个子程序的程序框图。
Rankp的框图与图2.4相同。
图2.19是程序清单,图2.20是本例的运行情况。
;
PROGRAMTITLEGOESHERE——Rank
**************************************************************************
datareasegment
grade dw 50dup(?
)
rank dw 50dup(?
count dw ?
mess1 db '
Grade?
$'
mess2 db 13,10,'
InputError!
'
13,10,'
$'
mess3 db '
Rank:
datarea ends
prognamsegment
--------------------------------------------------------------------------
main proc far
assumecs:
prognam,ds:
datarea
start:
setupstackforreturn
push ds
sub ax,ax
push ax
setDSregistertocurrentdatasegment
mov ax,datarea
mov ds,ax
MAINPARTOFPROGRAMGOESHERE
call input
call rankp
call output
ret
main endp
input proc near
lea dx,mess1
mov ah,09
int 21h
mov si,0
mov count,0
enter:
call decibin
inc count
cmp dl,'
'
je store
cmp dl,13
je exit2
jne error
store:
mov grade[si],bx
add si,2
jmp enter
error:
lea dx,mess2
exit2:
call crlf
input endp
rankp proc near
mov di,count
mov bx,0
loop1:
mov ax,grade[bx]
mov wordptrrank[bx],0
mov cx,count
lea si,grade
next:
cmp ax,[si]
jg no_count
inc wordptrrank[bx]
no_count:
loop next
add bx,2
dec di
jne loop1
rankp endp
output proc near
lea dx,mess3
next1:
mov bx,rank[si]
call binidec
mov dl,'
mov ah,02
jnz next1
output endp
decibin proc near
proceduretoconverdecimalonkeybdtobinary.
resultisleftinBXregister.
getdigitfromkeyboard,converttobinary
newchar:
mov ah,1
mov dl,al
sub al,30h
jl exit1
cmp al,9d
jg exit1
cbw
(digitisnowinAX)
multiplynumberinBXby10decimal.
xchg ax,bx
mov cx,10d
mul cx
adddigitinAXtonumberinBX
add bx,ax
jmp newchar
exit1:
decibin endp
binidec proc near
proceduretoconvertbinarynumberinBXtodecimal
onconsolescreen
push bx
push cx
push si
push di
mov cx,100d
call dec_div
mov cx,1d
pop di
pop si
pop cx
pop bx
binidec endp
dec_div proc near
sub_subroutinetodividenumberinBXybnumberinCX
printquotientonscreen
mov ax,bx
mov dx,0
div cx
mov bx,dx
printthecontentsofDLonscreen
add dl,30h
mov ah,02h
dec_div endp
crlf proc near
printcarriagereturnandlinefeed
mov dl,0ah
mov dl,0dh
crlf endp
prognamends
end start
程序框图如下:
实验截图如下:
实验总结:
在复杂的程序设计中,采用模块化结构可以划分功能、分界程序,使得程序有复杂变简单,变清晰。
主程序和子程序之间嵌套使用,使得写代码时思路更清楚明白,读代码时方便快捷清晰明了。
这点跟高级编程语言类似。
而此程序中变量p可以跟踪并控制输入的人数、输名字要预留缓存区、十进制码要和二进制码间相互转换,这些又体现了编程低级语言的特点。
学习汇编语言,重要的事掌握如何通过汇编指令和程序来控制计算机各个组成部件工作,完成一系列任务。
因此,学习汇编用语言与学习高级语言的不同之处是要学习如何深入到计算机的内部进行控制。
通过这次实验,加深了我对汇编语言的理解。
每一步的输入、存储、转换、输出,都需要一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 山东大学 汇编语言 上机 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)