收藏 分销(赏)

第四次作业之汇编程序编写及提高.doc

上传人:仙人****88 文档编号:7397327 上传时间:2025-01-02 格式:DOC 页数:11 大小:57.50KB 下载积分:10 金币
下载 相关 举报
第四次作业之汇编程序编写及提高.doc_第1页
第1页 / 共11页
第四次作业之汇编程序编写及提高.doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
实验四 汇编程序编写和提高 实验作业截止日 2015年4月6日(星期一)23:59:59 (编写程序和画程序流程图) 1、 编写一个汇编程序,先键盘输入的多个小写字母,回车后用大写字母显示出来。 2、 将键盘上输入的十六进制数转换成十进制数,并在屏幕上显示。 3、 利用中断调用,在屏幕上显示1—9之间随机数。中断号86H 4、 键盘输入10个学生的成绩,编写一个程序统计60-69分,70-79分,80-89分,90-99分及100分的人数,分别存放在Score6,Score7,Score8,Score9和Score10单元中。 【输入10个学生的成绩如下】65 65 98 78 82 88 95 72 62 90 100 1 DATAS SEGMENT n db 100 dup(?) ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT stack db 128 dup(?) ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX lea si,n mov ah,1 next: int 21h cmp al,13 jz done cmp al,'a' jl noop cmp al,'z' jg noop sub al,20h noop: mov [si],al inc si jmp next done: mov ah,2 mov dl,13 int 21h mov dl,10 int 21h mov byte ptr[si],'$' mov ah,9 lea dx,n int 21h ;此处输入代码段代码 MOV AH,4CH INT 21H CODES ENDS END START 2 DATAS SEGMENT H1 DB 5 H2 DB ? H3 DB 5 DUP(?) D DB 5 DUP(?),'$' MES DB 'Input four hexadecimal number:','$' en DB 10,13,10,13,'$' ERR DB 'ERROR','$' OF DB 'Overflow!','$';此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX LEA DX,MES MOV AH,9 INT 21H LEA DX,H1 MOV AH,0AH INT 21H MOV CX,4 ;对输入的ASC2字符做数值化处理 LEA SI,H3 AGIN: CMP BYTE PTR[SI],'0' JB ERROR CMP BYTE PTR[SI],'9' JA Aa SUB BYTE PTR[SI],'0' JMP OVER Aa: CMP BYTE PTR[SI],'A' JB ERROR CMP BYTE PTR[SI],'F' JA a SUB BYTE PTR[SI],7 SUB BYTE PTR[SI],'0' JMP OVER a: CMP BYTE PTR[SI],'a' JB ERROR CMP BYTE PTR[SI],'f' JA ERROR SUB BYTE PTR[SI],39 SUB BYTE PTR[SI],'0' OVER: INC SI LOOPNE AGIN LEA SI,H3 ;把十六进制数值放入AX中 MOV AH,H3 MOV CL,4 SHL AH,CL INC SI OR AH,[SI] INC SI MOV AL,[SI] SHL AL,CL INC SI OR AL,[SI] CMP AX,9999 ;比较 JA OVF MOV DX,0 ;转换 MOV BX,1000 DIV BX LEA SI,D MOV [SI],AL ADD BYTE PTR[SI],'0' MOV AX,DX MOV DX,0 MOV BL,100 DIV BL INC SI MOV [SI],AL ADD BYTE PTR[SI],'0' XCHG AL,AH MOV AH,0 MOV BL,10 DIV BL INC SI MOV [SI],AL ADD BYTE PTR[SI],'0' INC SI MOV [SI],AH ADD BYTE PTR[SI],'0' LEA DX,en ;正确输出 MOV AH,9 INT 21H LEA DX,D MOV AH,9 INT 21H MOV DL,'D' MOV AH,2 INT 21H JMP ENDD OVF: LEA DX,en ;溢出输出 MOV AH,9 INT 21H LEA DX,OF MOV AH,9 INT 21H JMP ENDD ERROR: ;错误输出 LEA DX,en MOV AH,9 INT 21H LEA DX,ERR MOV AH,9 INT 21H ENDD: ;此处输入代码段代码 MOV AH,4CH INT 21H CODES ENDS END START 3 DOSSEG .MODEL small .stack 100h .data second db 0 first db 0 .code start: mov ax,@data mov ds,ax s10: mov ah,2ch int 21h cmp first,0 jnz s20 mov first,1 mov second,dh s20: cmp second,dh jz s10 mov second,dh mov al,dl xor ah,ah mov bl,second xor bh,bh mul bx mov bx,9 xor dx,dx div bx add dl,'1' mov ah,2 int 21h mov ah,1 int 16h jz s10 mov ah,0 int 16h cmp ah,1 jnz s10 mov ah,4ch int 21h end start 4 Code Segment Assume CS:Code,DS:Code Score db 65,98,78,82,88,95,72,62,90,100 ; 成绩单 Elements equ ($-Score)/Type Score ;元素个数 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 S6[bx] ; 计数 loop Read_Score ; 循环,统计下一个成绩 cmp score,0 lea dx,s10 mov ah,09 int 21h Exit_Proc: mov ah,4ch ;结束程序 int 21h Code ENDS END Start
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服