汇编语言程序设计实验报告

实 验 报 告
      实验名称  汇编语言程序设计         
|
|
                专业班级:信息安全 
     
                学    号:
         
      姓    名:
实验一  汇编语言上机过程和Debug常用调试命令
一.实验目的:
学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:
        熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:
        试编写一程序:比较两个字符串string1string2所含的字符是否相同,若相同则显示match’; 否则,显示‘no match’。
四.方法说明:
a)使用wstcEDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b)用汇编程序masm(asm)对源文件汇编产生目标文件obj
如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c)用连接程序link 产生执行文件EXE.
d)执行程序,可直接从DOS执行程序。
e)使用debug程序调试程序的方法。
五.实验步骤:
1.调用字处理程序EDIT 建立以sample.asm文件
datarea segment   
string1  db  move the cursor  backward.
string2  db  move the cursor  backward.
mess1  db  Match..’,13,10,$
mess2  db  No match!..’,13,10,$
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea,es:datarea
        start:
push ds
sub  ax,ax
push  ax
mov ax,datarea
mov ds,ax
mov es,ax
lea si,string1
lea di,string2
cld
mov cx,25
repz cmpsb
jz  match
lea  dx,mess2
jmp  short  disp
  match:
          lea  dx, mess1
disp:
          mov  ah,09
          int    21h
          ret 
main      endp
prognam  ends
          end  start
2.对源文件汇编产生目标文件obj
D:\masm 文件名。Asm
3.用连接程序link产生执行文件exe
D:\link文件名。Obj
4.执行程序
D:\ 文件名
5. 使用debug程序调试程序的方法。
d>debug 文件名.exe
_
1.用G命令运行程序
2.用U命令显示程序
3.学会设置断点。
4.学会查看数据段的内容情况D
5.用E命令修改数据区的字符串。
6.用A 命令把数据区的内容恢复原状
7.T命令逐条跟踪程序的执行
8.学会使用F命令、R命令、Q命令等等
五、实验总结
    第一次进行汇编实验,主要是学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,只有多上机练习,才能更好的掌握汇编语言程序设计的思想。
实验二  循环程序设计1
循环结构是控制重复执行某一程序段的基本程序结构. 在汇编语言程序设计中, 循环程序的地位也是极为重要,从本质上来看, 循环程序结构是分支程序结构的一种手特殊形式, 也是使用条件转移指令来控制执行循环的.
   
一.实验目的:
学会用循环结构进行程序编程。
二.实验题目:
设计一个按表格形式显示ASC||码为10H100H的所有字符的程序。
三.实验要求:
        按15行*16列的表格形式显示ASC||码为10H----100H的所有字符,即以行为主的顺序及ASC||码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASC||为0)隔开。
四.方法说明:
(1) 显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:
mov ah,02h
mov dl,0AH
int  21h
    本题中可把dl 初始化为10H, 然后不断使其加1(用INC指令) 以取得下一个字符的ASC||码。
(2) 显示空白符时,用其ASC||码0置入dl 寄存器,每行结束时,用显示回车(ASC||为0dh)和换行符(ASC||为oah)来结束本行并开始下一行。
(3) 由于逐个显示相继的ASC||字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASC||字符。具体用法是:在显示空白或回车,换行符前用指令 
push  dx  dl 的内容保存到堆栈中去。在显示空白或回车,换行符后用指令   
pop  dx   恢复dl寄存器的原始内容。
五、实验代码
stack      segment
        db      100 dup (?)
stack      ends
code      segment         
      assume  cs:code,ss:stack
start:         
    mov    dl,10h   
    mov    cl,0fh
loopc:   
        mov    ah,02h     
        mov    al,dl
        int    21h
       
        inc    dl 
        push        dx     
        mov    dl,0h 
       
        mov    ah,02h
        mov    al,dl 
        int    21h
       
        pop    dx
       
        loopnz      loopc
       
        push    dx   
        mov    dl,0dh
       
        mov    ah,02h   
        mov    al,dl         
        int    21h
       
        mov    dl,0ah
       
        mov    ah,02h       
        mov    al,dl         
        int    21h
       
          pop    dx
         
          mov    cl,0fh
         
          cmp    dl,0h       
          jne    loopc
         
          mov    ah,4ch       
          int    21h
          code        ends         
          end    start
六、实验结果
七、实验总结
    本次试验学会用循环结构进行程序编程,学好循环程序是很重要的,在程序设计中,它的地位是极其重要的。
实验三  循环程序设计2
一.实验目的:
学会用循环程序设计进行程序编程。
二.实验题目:
设计查匹配字符串SEARCH的程序。
三.问题要求:
      程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则显示no match’;如果句子中包含关键字则显示‘match’,且把该字在句子中的位置用十六进制数显示出来,要求程序的执行过程如下:
      enter  keyword :abc
      enter  sentence :we  are  studying  abc
    match  at  location :11H of  the  sentence
    enter  sentence: xyz ,ok?
    no  match
    enter  sentence :^c
四.  方法说明:
程序可由三部分组成:
(1 ) 输入关键字和一个句子,分别存入相应的缓冲区中,可用功能调用0AH。
(2)在句子中查关键字。
1.关键字和一个句子中相应字段的比较可使用串比较指令,为此必须定义附加段,但附加段和数据段可以定义为同一段,以便于串指令的使用,这样,相应的寄存器内容也有了确定的含义,如下:
SI 寄存器为关键字的指针
DI 寄存器为句子中正相比较的字段的指针
CX寄存器存放关键字的字母个数(长度)
2.整个句子和关键字的比较过程可以用一个循环结构来完成。循环次数为:
(句子长度--关键字长度)+1在计算循环次数时,如遇到句子长度小于关键字长度的情况则应转向显示“no match”,循环中还需要用到BX寄存器,它用来保存句子中当前正在比较字段的首地址。
(3)输出信息:
用功能调用09h分“到”或“不到”两种情况分别显示不同的信息。在“到”时,还要求显示出匹配字符串在句子中的位置,在“到”时BX寄存器的内容为匹配字符串的首地址,将此值减到句子的首地址,再将差值加1 即是所要的匹配字符串在句子中的位置,可将位置转换为十六进制数从屏幕上显示出来。
五、实验代码
sseg segment  stack 
  dw  256  dup  (?
  sseg ends 
   
  data segment 
  msg1 db  'Enter  keyword:',24h 
  msg2 db  'Enter  Sentence:',24h 
oah

本文发布于:2024-09-21 20:49:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/377429.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   显示   循环   句子   实验   关键字   字符
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议