汇编语言编程 模块之间的调用.doc_第1页
汇编语言编程 模块之间的调用.doc_第2页
汇编语言编程 模块之间的调用.doc_第3页
汇编语言编程 模块之间的调用.doc_第4页
汇编语言编程 模块之间的调用.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中北大学课程设计说明书 2011/2012 学年第 二 学期学 院: 信息与商务学院 专 业: 自动化 学 生 姓 名: 陈瑾 学 号: 09050541X09 课程设计题目: 非数值处理程序设计 起 迄 日 期: 6 月 18 日 6 月 22 日 课程设计地点: 指 导 教 师: 兰艳亭 系 主 任: 下达任务书日期: 2012 年 6 月 15 日课 程 设 计 说 明 书1设计目的:(1)培养学生理论联系实际的设计思想,提高学生综合运用汇编语言课程的理论知识分析问题、解决问题的能力。(2)通过查找、运用设计资料,完成工程设计所必备的基本训练。(3)使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):一、内容编程实现大小写字母之间、二进制数和十六进制数之间以及十六进制数向十进制数的转换。程序应由个模块组成,程序采用远过程调用的方法实现。二、要求(1)根据要求确定解决问题的编程方法。(2)画出程序框图、设计源程序。(3)在计算机上汇编、连接所设计的程序。(4)按要求调试程序,记录程序运行结果。(5)写出设计总结报告。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:流程图:源程序:模块一:主程序F1 EQU 3bhF2 EQU 3ChF3 EQU 3DhF4 EQU 3EhF5 EQU 3FhESC1 EQU 11hextrn LTOH:far,HTOL:far,HEXTOBIN:far,BINTOHEX:far,HEXTODEC:FAR,DECTOHEX:FAR;change2:far,change3:far,change4:far,change5:far stack segment para public stack db 200 dup (0) stack ends data segment ;*主程序中的提示信息* str1 DB 0AH,0DH, *$ str2 DB 0AH,0DH, * Author: 09050541X09 CHENJIN *$ str3 DB 0AH,0DH, * press 1: letter convertion (low to high) *$ str4 DB 0AH,0DH, * press 2: letter convertion (high to low) *$ str5 DB 0AH,0DH, * press 3: SHUZHI convertion ( 16 TO 2 ) *$ str6 db 0AH,0DH, * press 4: SHUZHI convertion ( 2 TO 16 ) *$ str7 db 0AH,0DH, * press 5: SHUZHI convertion ( 16 TO 10 ) *$ str8 DB 0AH,0DH, * press 6: SHUZHI convertion ( 10 TO 16 ) *$ str9 DB 0AH,0DH, * press : exit *$ str10 DB 0AH,0DH, *$ str11 db 0ah,0dh,input error,please repess!,$ str_rn db 0ah,0dh,0ah,0dh,$key_scan db ?data ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax disp macro m lea dx,m mov ah,9 int 21h endm lop: disp str1 disp str2 disp str3 disp str4 disp str5 disp str6 disp str7 disp str8 disp str9 disp str10 disp str_rn mov ah,7hint 21h cmp al,1 jz call_LTOH cmp al,2 jz call_HTOLcmp al,3 jz call_HEXTOBINcmp al,4 jz call_BINTOHEXcmp al,5 jz call_HEXTODECcmp al,6 jz call_DECTOHEXcmp al,jz exit JMP LOP call_LTOH:mov dl,al mov ah,2int 21h CALL LTOH JMP LOPcall_HTOL:mov dl,al mov ah,2int 21h CALL HTOL JMP LOPcall_HEXTOBIN:mov dl,al mov ah,2int 21h CALL HEXTOBIN JMP LOPcall_BINTOHEX:mov dl,al mov ah,2int 21h CALL BINTOHEX JMP LOPcall_HEXTODEC:mov dl,al mov ah,2int 21h CALL HEXTODEC JMP LOPcall_DECTOHEX:mov dl,al mov ah,2int 21h CALL DECTOHEX JMP LOPexit: mov ah,4ch int 21h code ends end start模块二:小写字母转换成大写字母;letter convertion: LOW TO HIGHpublic LTOHdata segment info0 db 0ah,0dh,letter convertion: low to high press exit$ info1 db 0ah,0dh,please input string:$ info2 db 0ah,0dh,output string:$str_rn db 0ah,0dh,$ buf db 80 dup (?) LEN DW 0KEY DB 0data ends stack segment stack db 200 dup (?) stack ends code segment assume ds:data,cs:code,ss:stack disp macro m lea dx,m mov ah,9 int 21h endm LTOH proc farPUSH AX PUSH BXPUSH CXPUSH DXPUSH SI PUSH DIPUSH SSPUSH DS mov ax,data mov ds,ax lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h MOV DI,0 MOV LEN,0 MOV BUFDI,$LOP:mov ah,7int 21h MOV KEY,AL CMP AL,a JB CMP_OTHER CMP AL,z JA CMP_OTHERMOV AH,2 MOV DL,AL INT 21H SUB AL,20H MOV BUFDI,AL MOV BUFDI+1,$ INC DI CMP DI,20H JZ DISPLAY JMP LOP CMP_OTHER: CMP KEY,0DH JZ DISPLAY CMP KEY, JZEXIT JMP LOPDISPLAY:lea dx,info2mov ah,9 int 21h lea dx,BUFmov ah,9 int 21h lea dx,str_rn mov ah,9 int 21h lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h MOV DI,0 MOV LEN,0 MOV BUFDI,$JMP LOPEXIT:POP DSPOP SSPOP DIPOP SIPOP DXPOP CXPOP BXPOP AX RETLTOH endcode ends end 模块三:大写字母转换成小写字母letter convertion: HIGH TO LOWpublic HTOLdata segment info0 db 0ah,0dh,letter convertion: high to low press exit$ info1 db 0ah,0dh,please input string:$ info2 db 0ah,0dh,output string:$ str_rn db 0ah,0dh,$buf db 80 dup (?) LEN DW 0KEY DB 0data ends stack segment stack db 200 dup (?) stack ends code segment assume ds:data,cs:code,ss:stack disp macro m lea dx,m mov ah,9 int 21h endm HTOL proc farPUSH AX PUSH BXPUSH CXPUSH DXPUSH SI PUSH DIPUSH SSPUSH DS mov ax,data mov ds,ax lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h MOV DI,0 MOV LEN,0 MOV BUFDI,$LOP:mov ah,7int 21h MOV KEY,AL CMP AL,A JB CMP_OTHER CMP AL,Z JA CMP_OTHERMOV AH,2 MOV DL,AL INT 21H add AL,20H MOV BUFDI,AL MOV BUFDI+1,$ INC DI CMP DI,20H JZ DISPLAY JMP LOP CMP_OTHER: CMP KEY,0DH JZ DISPLAY CMP KEY, JZEXIT JMP LOPDISPLAY:lea dx,info2mov ah,9 int 21h lea dx,BUFmov ah,9 int 21h lea dx,str_rn mov ah,9 int 21h lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h MOV DI,0 MOV LEN,0 MOV BUFDI,$JMP LOPEXIT:POP DSPOP SSPOP DIPOP SIPOP DXPOP CXPOP BXPOP AX RET HTOL endpcode ends end 模块四:十六进制转换成二进制;SHUZHI convertion: 16 TO 2public HEXTOBINdata segment info0 db 0ah,0dh,SHUZHI convertion: 16 TO 2 press exit$ info1 db 0ah,0dh,please input HEX data (for example:35db) :$ info2 db 0ah,0dh,the binary number is :$ str_rn db 0ah,0dh,$buf db 80 dup (?) data ends stack segment stack db 200 dup (?) stack ends code segment assume ds:data,cs:code,ss:stack disp macro m lea dx,m mov ah,9 int 21h endm HEXTOBIN proc far PUSH AX PUSH BXPUSH CXPUSH DXPUSH SI PUSH DIPUSH SSPUSH DS mov ax,data mov ds,ax lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h mov bx,0mov cL,4MOV CH,4LOP:mov ah,7int 21h cmp al,0 jb cmp_other cmp al,9 jbe digitcmp al,A jb cmp_other cmp al,F jbe LETTER1cmp al,a jb cmp_other cmp al,f jbe LETTER2jmp cmp_otherletter1:MOV AH,2 MOV DL,AL INT 21Hsub al,55 SHL BX,CL ADD BL,AL DEC CHJZ DISPLAY JMP LOPletter2:MOV AH,2 MOV DL,AL INT 21Hsub al,87 SHL BX,CL ADD BL,AL DEC CHJZ DISPLAY JMP LOPdigit:MOV AH,2 MOV DL,AL INT 21Hsub al,30h SHL BX,CL ADD BL,AL DEC CHJZ DISPLAY JMP LOPCMP_OTHER: CMP al,0DH JZ DISPLAY CMP al, JZEXIT JMP LOPDISPLAY:lea dx,info2mov ah,9 int 21h mov cx,16lop_dis:rol bx,1jb display1 mov dl,0jmp dis display1:mov dl,1dis:mov ah,2int 21hloop lop_dis next:lea dx,str_rn mov ah,9 int 21h lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h mov bx,0mov cL,4MOV CH,4JMP LOPEXIT:POP DSPOP SSPOP DIPOP SIPOP DXPOP CXPOP BXPOP AX ret HEXTOBIN endp code ends end 模块五:二进制转换成十六进制;SHUZHI convertion ( 2 TO 16 ) public BINTOHEXdata segment info0 db 0ah,0dh,SHUZHI convertion: 2 TO 16 press exit$ info1 db 0ah,0dh,please input binary data (for example:1111000011110000) :$ info2 db 0ah,0dh,- the hex number is -:$ str_rn db 0ah,0dh,$buf db 80 dup (?) data ends stack segment stack db 200 dup (?) stack ends code segment assume ds:data,cs:code,ss:stack disp macro m lea dx,m mov ah,9 int 21h endm BINTOHEX proc far PUSH AX PUSH BXPUSH CXPUSH DXPUSH SI PUSH DIPUSH SSPUSH DS mov ax,data mov ds,ax lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h mov bx,0mov cL,4MOV CH,16LOP:mov ah,7int 21h cmp al,0 jZ digit0 cmp al,1 jz digit1jmp cmp_otherdigit0:clc jmp lop_nextdigit1:stclop_next:MOV AH,2 MOV DL,AL INT 21Hrcl bx,1 DEC CHJZ DISPLAY JMP LOPCMP_OTHER: CMP al,0DH JZ DISPLAY CMP al, JZEXIT JMP LOPDISPLAY:lea dx,info2mov ah,9 int 21h sub ax,ax mov ch,4 mov cl,4 rotate: rol bx,cl mov al,bl and al,0fh add al,30h cmp al,3ah jl printit add al,7h printit: mov dl,al mov ah,2 int 21h dec ch jnz rotate lea dx,str_rn mov ah,9 int 21h lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h mov bx,0mov cL,4MOV CH,16JMP LOPEXIT:POP DSPOP SSPOP DIPOP SIPOP DXPOP CXPOP BXPOP AX ret BINTOHEX endp code ends end 模块六:十六进制转换成十进制;SHUZHI convertion: 16 TO 10public HEXTODECdata segment info0 db 0ah,0dh,SHUZHI convertion: 16 TO 10 press exit$ info1 db 0ah,0dh,please input HEX data (for example:35db) :$ info2 db 0ah,0dh,the DECIMAL number is :$ str_rn db 0ah,0dh,$buf db 80 dup (?) data ends stack segment stack db 200 dup (?) stack ends code segment assume ds:data,cs:code,ss:stack disp macro m lea dx,m mov ah,9 int 21h endm HEXTODEC proc far PUSH AX PUSH BXPUSH CXPUSH DXPUSH SI PUSH DIPUSH SSPUSH DS mov ax,data mov ds,ax lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h mov bx,0mov cL,4MOV CH,4LOP:mov ah,7int 21h cmp al,0 jb cmp_other cmp al,9 jbe digitcmp al,A jb cmp_other cmp al,F jbe LETTER1cmp al,a jb cmp_other cmp al,f jbe LETTER2jmp cmp_otherletter1:MOV AH,2 MOV DL,AL INT 21Hsub al,55 SHL BX,CL ADD BL,AL DEC CHJZ DISPLAY JMP LOPletter2:MOV AH,2 MOV DL,AL INT 21Hsub al,87 SHL BX,CL ADD BL,AL DEC CHJZ DISPLAY JMP LOPdigit:MOV AH,2 MOV DL,AL INT 21Hsub al,30h SHL BX,CL ADD BL,AL DEC CHJZ DISPLAY JMP LOPCMP_OTHER: CMP al,0DH JZ DISPLAY CMP al, JZEXIT JMP LOPDISPLAY:lea dx,info2mov ah,9 int 21h MOV CX,10000mov dx,0mov ax,bxdiv CXADD AL,30HMOV BUF0,ALMOV CX,1000MOV AX,DXmov dx,0div CXADD AL,30HMOV BUF1,ALMOV CX,100MOV AX,DXmov dx,0div CXADD AL,30HMOV BUF2,ALMOV CX,10MOV AX,DXmov dx,0div CXADD AL,30HMOV BUF3,ALADD DL,30HMOV BUF4,DLMOV BUF5,$ lea dx,buf mov ah,9 int 21h next:lea dx,str_rn mov ah,9 int 21h lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21h mov bx,0mov cL,4MOV CH,4JMP LOPEXIT:POP DSPOP SSPOP DIPOP SIPOP DXPOP CXPOP BXPOP AX ret HEXTODEC endp code ends end 模块七:十进制转换成十六进制;SHUZHI convertion: 10 TO 16public DECTOHEXdata segment info0 db 0ah,0dh,SHUZHI convertion: 10 TO 16 press exit$ info1 db 0ah,0dh,please input dec data (for example:35db) :$ info2 db 0ah,0dh,the HEX number is :$ str_rn db 0ah,0dh,$HDW 0LDW 0buf db 80 dup (?) data ends stack segment stack db 200 dup (?) stack ends code segment assume ds:data,cs:code,ss:stack disp macro m lea dx,m mov ah,9 int 21h endm DECTOHEX proc far PUSH AX PUSH BXPUSH CXPUSH DXPUSH SI PUSH DIPUSH SSPUSH DS mov ax,data mov ds,ax lea dx,info0 mov ah,9 int 21h lea dx,info1 mov ah,9 int 21hMOV CH,4MOV SI,0LOP:mov ah,7int 21h cmp al,0 jb cmp_other cmp al,9 jbe digitJMP CMP_OTHERdigit:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论