版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 SHANGHAI UNIVERSITYIBM汇编语言程序设计实验报告学 院计算机工程与科学学院学号姓名指导老师江苏苏日期2016.10实验五、输入输出及中断功能和子程序调用目的: 1. 全面掌握输入和输出的中断功能调用(键盘和显示器) 2. 掌握子程序的定义和调用 3. 学会编制良好风格的汇编语言程序 要求: 1)在实验四的基础上,在屏幕上开设二个窗口(如左右或上下)2)定义输入缓冲区(最多输入50个字符)3)在第一个窗口输入(要求有输入提示)4)后台程序完成实验四的工作5)结果显示在第二个窗口(要求有输出提示)6)所有程序必须以子程序方式体现(除了初始化和程序结尾)7)必须在程序中做好子程
2、序的功能说明以及参数说明8)注意调试结果,并做好记录代码:DATAS SEGMENT maxlen db 50 count db ? ;计数器 res db 51 dup(?) letter db 50 dup(?) digit db 50 dup(?) num_letter db 0 num_digit db 0 string1 db "The num of letter is $" string2 db "Ths num of digit is $" string3 db ": $" string4 db "Please
3、 input a string and end with 'Enter' $" string8 db "After sorted the string is : $" string5 db "Please input a letter to find how many times it shows: $" string6 db " shows $" string7 db " times.$" copy_res db 51 dup(?) const_1 db 2 const_2 db ? f
4、ind_target db 2 dup(?) find_result db 0H ;查找结果 input_cursor_row db ? input_cursor_column db ? output_cursor_row db ? output_cursor_column db ?DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 main:call INITcall INPU
5、T call CLASSIFY call COPYSTRING call BUBBLESORT call FIND mov ah,1 int 21h jmp mainmov ah,4chint 21hINPUT proc near ;input a string and save it in res,the num of letter in countlea dx,string4mov ah,9Hint 21Hcall IN_ENDL lea dx,maxlen mov ah,0AH int 21H call IN_ENDL retINPUT endp CLASSIFY proc near ;
6、将储存在res中的字符串分类统计(res首地址为0002H)init: lea bx,res sub bx,2H lea si,letter lea di,digitcompare1: cmp resbx,'a' jb compare2 cmp resbx,'z' ja compare3 inc num_letter mov dl,resbx mov si,dlinc si jmp move_to_nextcompare2: cmp resbx,'Z' ja move_to_next cmp resbx,'A' jb compar
7、e3 mov al,num_letter inc al mov num_letter,al mov dl,resbx mov si,dl inc si jmp move_to_nextcompare3: cmp resbx,'9' ja move_to_next cmp resbx,'0' jb move_to_next inc num_digit mov dl,resbx mov di,dl inc di jmp move_to_nextmove_to_next: inc bx cmp bl,count jb compare1 jmp exit exit:ca
8、ll OUT_ENDL lea dx,string1 mov ah,9 int 21H mov ax,0H mov al,num_letter call HEXTO10 lea dx,string3 mov ah,9 int 21H mov dl,'$' mov si,dl lea dx,letter MOV AH,9 INT 21H call OUT_ENDL lea dx,string2 mov ah,9 int 21H mov ax,0H mov al,num_digit call HEXTO10 lea dx,string3 mov ah,9 int 21H mov d
9、l,'$' mov di,dl lea dx,digit MOV AH,9 INT 21H call OUT_ENDL retCLASSIFY endp HEXTO10 proc near ;将AX中的16进制转换为10进制(会修改bx,cx,dx的值) mov cx,0 mov bx,10disp1: mov dx,0 div bx push dx inc cx or ax,ax jne disp1 disp2: mov ah,2 pop dx add dl,30H int 21h loop disp2 retHEXTO10 endpCOPYSTRING proc near
10、;将res字符串拷贝到copy_res中,count为字符数目mov si,0mov cl,countlop:mov dl,ressimov copy_ressi,dlinc siloop lopretCOPYSTRING endpBUBBLESORT proc near ;将copy_res冒泡排序,count为字符数目mov bx,0000Hmov si,0000Hmov bl,countmov cx,bxinit: dec cxcmp cx,0Hje exitmov di,0Hcompare:mov dl,copy_resdi0001Hcmp copy_resdi,dlja exchan
11、gejmp nextexchange:mov dl,copy_resdimov dh,copy_resdi0001Hmov copy_resdi0001H,dlmov copy_resdi,dhjmp nextnext:inc dicmp di,cxjb comparejmp initexit:lea dx,string8mov ah,9int 21Hmov bl,count ;输出排序后的字符串 mov dl,'$' mov copy_resbx,dl lea dx,copy_res mov ah,9 int 21HretBUBBLESORT endpFIND proc ne
12、ar ;在copy_res中查找特定字符,将查找结果输出到find_result中call IN_ENDLlea dx,string5mov ah,9int 21Hcall IN_ENDLlea dx,const_1 ;输入字符 mov ah,0AH int 21H mov cx,0000Hmov cl,countmov bx,0000Hmov bl,countmov al,find_target0000Hsta:cmp bx,0000Hje exitdec bxmov dl,copy_resbxcmp al,dlje equaljmp staequal:mov dl,find_resulti
13、nc dlmov find_result,dljmp staexit:call OUT_ENDLmov dl,find_target0000H mov ah,2 int 21H lea dx,string6 mov ah,9 int 21H mov ax,0H mov al,find_result call HEXTO10 lea dx,string7 mov ah,9 int 21HretFIND endpIN_ENDL proc near ;输入换行mov dh,input_cursor_rowmov dl,input_cursor_columninc dhmov input_cursor
14、_row,dhcall PLACEINPUT retIN_ENDL endpOUT_ENDL proc near ;输入换行mov dh,output_cursor_rowmov dl,output_cursor_columninc dhmov output_cursor_row,dhcall PLACEOUTPUT retOUT_ENDL endpPAINT proc nearmov AL,0mov BH,30H ;back 3 front 0 mov CH,2 ;start_up mov CL,8 mov DH,10 mov DL,70mov AH,6int 10Hmov AL,0mov
15、BH,30H ;back 3 front 0 mov CH,14 ;start_up mov CL,8 ;start_left mov DH,22 ;end_down mov DL,70 ;end_rightmov AH,6int 10HretPAINT endpPLACEINPUT proc near ;place input cursor mov dh,input_cursor_row ;row mov dl,input_cursor_column ;column mov bh,0 mov ah,2 int 10h retPLACEINPUT endpPLACEOUTPUT proc near ;place output cursormov dh,output_cursor_row ;row mov dl,output_cursor_column ;column mov bh,0 mov ah,2 int 10h retPLACEOUTPUT endp INIT proc near ;to init this programcall PAINTmov input_cursor_row,2mov i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年甲乙双方关于高端智能家电研发项目转让合同
- 陕西学前师范学院《信息技术》2023-2024学年第一学期期末试卷
- 车辆合伙入股合同范例
- 深圳模特经纪合同范例
- 陕西青年职业学院《数据可视化设计》2023-2024学年第一学期期末试卷
- 2024年电源线中间开关项目可行性研究报告
- 全案设计整套合同范例
- 2024年利塞磷酸钠项目可行性研究报告
- 外包业务合同范例
- 一年级数学计算题专项练习集锦
- 廉政文化进社区活动方案(6篇)
- 2024工贸企业重大事故隐患判定标准解读
- 2024年上海高一数学试题分类汇编:三角(解析版)
- 大单品战略规划
- 2023年北京语言大学新编长聘人员招聘考试真题
- 管道保温施工方案
- 工艺工程师招聘笔试题与参考答案(某大型集团公司)
- 商务礼仪(通识课)学习通超星期末考试答案章节答案2024年
- 智能工厂梯度培育要素条件
- 手术分级目录(2023年修订)
- 2024年人事科工作总结(五篇)
评论
0/150
提交评论