汇编语言题,高分求助!!
1、用递归的方法求斐波那契数的第24项(N=24),并将结果用十进制显示出来(要求:显示用宏实现)。程序输出FIB(24)的值。2、统计学生成绩result设计10个学生...
1、用递归的方法求斐波那契数的第24项(N=24),并将结果用十进制显示出来(要求:显示用宏实现)。
程序输出FIB(24)的值。
2、统计学生成绩result
设计10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。 展开
程序输出FIB(24)的值。
2、统计学生成绩result
设计10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。 展开
展开全部
1、用递归的方法求斐波那契数的第24项(N=24),并将结果用十进制显示出来(要求:显示用宏实现)。
程序输出FIB(24)的值。
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; ---------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; ---------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; ---------------------------------------
; 功能:输出回车换行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
; ---------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push ax
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop ax
pop bx
pop dx
ret
@@Temp_Save db 7 dup(?)
Dec_ASCII EndP
; ---------------------------------------
Prompt_Str db 13,10,13,10,'Please input the number n: $'
Press_Key db 13,10,13,10,'Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
mov cx,24
jmp @@Calculate
Output Prompt_Str ;提示输入Fibonacci数列的项数
Read_Item: mov ah,1
int 21h
cmp al,1bh ;Esc?
jz Exit_Proc ;是,结束程序,返回操作系统
cmp al,'3' ;al<'3'?
jb Read_Item ;是,数字无效,重新输入
cmp al,'9' ;al>'9'?
ja Read_Item ;是,数字无效,重新输入
call Output_CTLF ;输出一个回车、换行
call Output_CTLF
mov dl,'1'
call Output_Chr ;显示一个字符
mov dl,','
call Output_Chr ;显示一个字符
mov dl,'1'
call Output_Chr ;显示一个字符
and al,0fh
cbw
mov cx,ax
@@Calculate:dec cx
dec cx ;循环次数=n-2
mov dx,1 ;第1项值
mov ax,1 ;第2项值
List_Item: push dx
mov dl,','
call Output_Chr ;显示一个字符
pop dx
mov bp,ax ;保存前项值
add ax,dx ;前两项之和
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
mov dx,bp ;前第2项值
loop List_Item
Output Press_Key
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
2、统计学生成绩result
设计10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
Score db 56,69,84,82,73,88,99,63,100,80 ; 成绩单
Elements equ ($-Score)/Type Score ;元素个数
S5 db 0 ;低于60分计数
S6 db 0 ;60-69分计数
S7 db 0 ;70-79分计数
S8 db 0 ;80-89分计数
S9 db 0 ;90-99分计数
S10 db 0 ;100分计数
Start: push cs
pop ds
cld
lea si,Score ; 成绩首地址
mov cx,Elements ;成绩数目
mov dl,10 ; 用于除10
Read_Score: lodsb ; 提取成绩
div dl ; 除10
cmp al,5 ; >5,及格
jg $+4
mov al,5 ; <=5,不及格
sub al,5 ; 减5,分数段计数地址偏移量
xor ah,ah
push ax
pop bx
inc S5[bx] ; 计数
loop Read_Score ; 循环,统计下一个成绩
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
程序输出FIB(24)的值。
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; ---------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; ---------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Output_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Output_Chr endp
; ---------------------------------------
; 功能:输出回车换行
Output_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
Output_CTLF endp
; ---------------------------------------
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数
; 出口:在当前光标位置显示转换后的ASCII码数字
Dec_ASCII Proc Near
push dx
push bx
push ax
push di
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop ax
pop bx
pop dx
ret
@@Temp_Save db 7 dup(?)
Dec_ASCII EndP
; ---------------------------------------
Prompt_Str db 13,10,13,10,'Please input the number n: $'
Press_Key db 13,10,13,10,'Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
mov cx,24
jmp @@Calculate
Output Prompt_Str ;提示输入Fibonacci数列的项数
Read_Item: mov ah,1
int 21h
cmp al,1bh ;Esc?
jz Exit_Proc ;是,结束程序,返回操作系统
cmp al,'3' ;al<'3'?
jb Read_Item ;是,数字无效,重新输入
cmp al,'9' ;al>'9'?
ja Read_Item ;是,数字无效,重新输入
call Output_CTLF ;输出一个回车、换行
call Output_CTLF
mov dl,'1'
call Output_Chr ;显示一个字符
mov dl,','
call Output_Chr ;显示一个字符
mov dl,'1'
call Output_Chr ;显示一个字符
and al,0fh
cbw
mov cx,ax
@@Calculate:dec cx
dec cx ;循环次数=n-2
mov dx,1 ;第1项值
mov ax,1 ;第2项值
List_Item: push dx
mov dl,','
call Output_Chr ;显示一个字符
pop dx
mov bp,ax ;保存前项值
add ax,dx ;前两项之和
call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
mov dx,bp ;前第2项值
loop List_Item
Output Press_Key
mov ah,1
int 21h
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
2、统计学生成绩result
设计10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
Score db 56,69,84,82,73,88,99,63,100,80 ; 成绩单
Elements equ ($-Score)/Type Score ;元素个数
S5 db 0 ;低于60分计数
S6 db 0 ;60-69分计数
S7 db 0 ;70-79分计数
S8 db 0 ;80-89分计数
S9 db 0 ;90-99分计数
S10 db 0 ;100分计数
Start: push cs
pop ds
cld
lea si,Score ; 成绩首地址
mov cx,Elements ;成绩数目
mov dl,10 ; 用于除10
Read_Score: lodsb ; 提取成绩
div dl ; 除10
cmp al,5 ; >5,及格
jg $+4
mov al,5 ; <=5,不及格
sub al,5 ; 减5,分数段计数地址偏移量
xor ah,ah
push ax
pop bx
inc S5[bx] ; 计数
loop Read_Score ; 循环,统计下一个成绩
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
展开全部
1.暂时没搞定
2.
data segment
scor db 56,69,84,82,73,88,99,100,80
s5 db 0 ; <60 ah
s6 db 0 ; 60-69 al
s7 db 0 ; 70-79 bh
s8 db 0 ; 80-89 bl
s9 db 0 ; 90-99 dh
s10 db 0 ; 100 dl
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov dx,ax
mov di,scor
mov cx,10
mov ax,0
mov bx,0
mov dx,0
a0007:
cmp [di],60
jb a0001
cmp [di],70
jb a0002
cmp [di],80
jb a0003
cmp [di],90
jb a0004
cmp [di],100
jb a0005
inc dl
jmp a0006
a0001: inc ah
jmp a0006
a0002: inc al
jmp a0006
a0003: inc bh
jmp a0006
a0004: inc bl
jmp a0006
a0005: inc dh
a0006: inc di
loop a0007
mov ah,4ch
int 21h
code ends
end start
2.
data segment
scor db 56,69,84,82,73,88,99,100,80
s5 db 0 ; <60 ah
s6 db 0 ; 60-69 al
s7 db 0 ; 70-79 bh
s8 db 0 ; 80-89 bl
s9 db 0 ; 90-99 dh
s10 db 0 ; 100 dl
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov dx,ax
mov di,scor
mov cx,10
mov ax,0
mov bx,0
mov dx,0
a0007:
cmp [di],60
jb a0001
cmp [di],70
jb a0002
cmp [di],80
jb a0003
cmp [di],90
jb a0004
cmp [di],100
jb a0005
inc dl
jmp a0006
a0001: inc ah
jmp a0006
a0002: inc al
jmp a0006
a0003: inc bh
jmp a0006
a0004: inc bl
jmp a0006
a0005: inc dh
a0006: inc di
loop a0007
mov ah,4ch
int 21h
code ends
end start
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-10-30
展开全部
哈哈,原来是老班
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询