汇编语言程序设计报告.docx
汇编语言程序设计报告 实验一: 一、实验目的: 1. 学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2. 了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3. 掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4. 掌握DOS系统功能调用的基本方法。 二、实验原理 通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上 三、实验内容及算法流程、源程序清单 实验内容:编写程序,从键盘输入一个字符并回显到视频显示器上。 源程序清单: 实验1.asm 实验1.obj 实验1.exe code segment assume cs:code start: mov ah,1 int 21h mov ah,4ch int 21h code ends end start 实验二:编写程序,显示一个字符Q 一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。 二、实验原理 通过调用(INT 21H)表中的02h号功能显示输出一个字符Y。 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,显示输出一个字符Q。 源程序清单: 实验2.asm 实验2.obj 实验2.exe code segment assume cs:code start: mov ah,02 mov dl,'Q' int 21h mov ah,4ch int 21h code ends end start 实验三:编写程序,在屏幕上显示输出“I love DOTA” 一、实验目的 1、学习汇编语言源程序的编辑、汇编、连接、运行全过程。 2、了解汇编程序、连接程序、DOS系统装入和返回功能。掌握MASM、LINK的应用。 3、掌握汇编语言程序结构,熟悉汇编语言的一些常用语法规则,初步掌握汇编语言的开发过程。 4、掌握DOS系统功能调用的基本方法。 二、实验原理 考察通过调用(INT 21H)表中的0ah号功能显示输出字符串 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,在屏幕上显示输出I love DOTA。 源程序清单: 实验3.asm 实验3.obj 实验3.exe data segment buf db 'I love DOTA.$' data ends code segment assume cs:code ds:data start: mov ax,data mov ds,ax lea dx,buf mov ah,9 int 21h mov ah,4ch int 21h code ends end start 实验四:实验名称:编写一个程序,要求从键盘输入一个小写字母,以其大写字母形式显示,否则显示ERROR。 一、实验目的 综合转移指令与字符串显示操作。 二、实验原理 对输入的字符进行比较,若为小写字母的字符,则通过02h号功能显示该字符的大写形式,否则通过JMP跳转指令输出字符串。 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写一个汇编语言程序,要求从键盘输入一个小写字母,以其大写字母形式显示,否则显示error。 流程(流程框图) 源程序清单: 实验4.asm 实验4.obj 实验4.exe data segment buf db 'ERROR$' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov ah,01 int 21h push ax mov ah,02 mov dl,0ah int 21h pop ax cmp al,'a' jb A cmp al,'z' ja A sub al,20h mov dl,al mov ah,02 int 21h jmp B A: lea dx,buf mov ah,9 int 21h B: mov ah,4ch int 21h code ends end start 实验五:编写程序在屏幕上显示10个“T”。 一、实验目的 通过LOOP循环语句控制输出,熟悉LOOP语句的用法。 二、实验原理 通过LOOP循环语句置CX寄存器的值为10,并在循环体内调用02H功能,进行字符输出。 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,在屏幕上输出10个“T”。 源程序清单: 实验5.asm 实验5.obj 实验5.exe code segment assume cs:code start: mov cx,10 again: mov dl,'T' mov ah,02 int 21h loop again mov ah,4ch int 21h code ends end start 实验六:从键盘输入一个字符,如果是x则显示10个*,如果是y,则显示10个如果是z,则显示10个$,否则退出程序。 一、实验目的 主要考察JMP转移指令以及条件转移指令。 二、实验原理 对输入的字符进行比较,如果满足相应的条件则根据条件转移指令转移到不同的地方输出不同的字符。 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 从键盘输入一个字符,如果是x则显示10个*,如果是y,则显示10个如果是z,则显示10个$,否则退出程序。 源程序清单: 实验6.asm 实验6.obj 实验6.exe code segment assume cs:code start: mov cx,10 mov ah,01 int 21h cmp al,'x' jz A cmp al,'y' jz B cmp al,'z' jz C jmp D A: mov dl,'*' mov ah,02 int 21h loop A jmp D B: mov dl,'' mov ah,02 int 21h loop B jmp D C: mov dl,'$' mov ah,02 int 21h loop C int 21h D: mov ah,4ch int 21h code ends end start 实验七:从键盘输入一个字符串,要求将其转换为大写字符串显示。 一、实验目的 考察DOS系统调用里的02H号功能进行字符串输入操作。 二、实验原理 通过调用DOS系统调用里的02H号功能进行字符的输入操作,将其中的每个字符先进行判断,合乎要求的减去20h然后存储,最后对其输出。 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 从键盘输一个字符串,要求将其转换为大写字符串显示。 流程(流程框图) 源程序清单: 实验7.asm 实验7.obj 实验7.exe assume cs:code,ds:data data segment string db 100 dup(?) data ends code segment start: mov ax,data mov ds,ax lea si,string mov ah,01 next: int 21h cmp al,13 jz done cmp al,'a' jl noop sub al,20h noop: mov si,al inc si jmp next done: mov ah,02 mov dl,13 int 21h mov dl,10 int 21h mov byte ptr si,'$' mov ah,09 lea dx,string int 21h mov ax,4c00h int 21h code ends end start 实验八:编写程序从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 一、实验目的 通过条件转移指令产生不同的分支。 二、实验原理 通过对输入的字符进行比较,若为小写字母字符,则先将该字符的ASCII码减去1输出,然后依次加上1后在输出,一共输出3个字符即可。 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容: 编写程序,从键盘接受一个小写字母,然后找出他的前导字符和后续字符,再按顺序显示这三个字符。 流程(流程框图) 源程序清单: 实验8.asm 实验8.obj 实验8.exe assume cs:code,ds:data data segment buf db 'Please input one character :$' str db 'ERROR!$' data ends code segment start: mov ax,data mov ds,ax lea dx,buf mov ah,09 int 21h mov ah,07 int 21h cmp al,'a' jz C cmp al,'z' jz D cmp al,'b' jb A cmp al,'y' ja A mov dl,al mov ah,02 int 21h mov bl,al mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02 int 21h mov al,bl sub al,1h mov dl,al mov ah,02 int 21h add al,1h mov dl,al mov ah,02 int 21h add al,1h mov dl,al mov ah,02 int 21h jmp B A: lea dx,str mov ah,09 int 21h jmp B C: mov dl,al mov ah,02 int 21h mov dl,0dh mov ah,02 int 21h mov dl,0ah mov ah,02 int 21h mov dl,'a' mov ah,02 int 21h mov dl,'b' mov ah,02 int 21h jmp B D: mov dl,al mov ah,02 int 21h mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02 int 21h mov dl,'y' mov ah,02 int 21h mov dl,'z' mov ah,02 int 21h jmp B B: mov ax,4c00h int 21h code ends end start 实验九:从键盘接收一个小写字符串,并将该字符串在屏幕上进行显示,然后再下一行输出剔除其中数字字符的字符串。 一、实验目的 1. 掌握汇编语言程序的开发方法和过程; 2. 掌握汇编语言程序设计中数据分类统计的基本方法。 二、实验原理 先将字符串显现出来,在进行输入的同时判断,并将数字字符屏蔽掉然后保存字符串,最后依次输出 三、实验内容及算法流程(流程框图)、源程序清单(要求在重要语句后写出注释) 实验内容:从键盘接收一个小写字符串,并将该字符串在屏幕上进行显示,然后再下一行输出剔除其中数字字符的字符串。 源程序清单: 实验9.asm 实验9.obj 实验9.exe data segment str1 db 'Please input a string :$'