顺序结构程序设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《汇编语言程序设计》实验报告
实验名顺序结构程序设计实验室实验楼实验日期2014-05-05
add ax,Z
mov W,ax ;X,Y,Z之和存入W中
ret
main endp
code ends ;代码段结束
end start
3.调试过程:
(1).用masm程序产生mwn1.obj文件,编译没有错误,如下图:
(2).用link程序产生mwn1.exe文件,连接没有错误,如下图:
(3).进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;
(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为5,6,7,接着下一个字的内容为0:
(5).用t命令单步执行,前三次为初始化,具体的如下图:
(6)用t命令执行,如下图,将[0000]单元中的内容05h传给ax,ax中的内容为0005,将[0002]单元中的内容和ax相加,并把结果存放在ax中,ax中的内容为000b=(5+6)
(7)用t命令执行,如下图,将[0004]单元中的内容0bh和ax相加,并把结果存放在W中,W 中的内容为0012=(0b+7)
题目二:
1.设计:
首先,在数据段中,定义字符串存放在变量s1中,同时申请一个字单元,用标号s2来表示,用来存放计数次数;在代码段中,首先初始化,然后,根据cld与rep的组合递减,将字符一个一个根据地址的指示按顺序输出。

2.源程序清单
data segment
s1 db 'This is a program!$'
count equ $-s1 ;变量count代替$-s1
s2 db count dup(?)
data ends ;定义数据段,变量s1为字符串'This is a program!$',
;变量s2是重复计数次数
code segment ;代码段
assume cs:code,ds:data,es:data
start:
mov ax,data
mov gt
mov es,ax ;初始化
mov si,offset s1 ;将变量s1的偏移地址放入寄存器si中
mov di,offset s2 ;将变量s2的偏移地址放入寄存器di中
mov cx,count ;将计数次数存入寄存器cx中
Cld
rep movsb ;在字符串的比较,di或si是可以自动增减,即si,di向前移动
mov dx,offset s2
mov ah,9
int 21h
mov ax,4c00h
int 21h ;输出结果
code ends
end star t
3.调试过程:
(1).用masm程序产生mwn2.obj文件,编译没有错误,如下图:
(2).用link程序产生mwn1.exe文件,连接没有错误,如下图:
(3).进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;
(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为This is a program!$,接着下一个字的内容为0:
(5)用t命令单步执行,前三次为初始化,具体的如下图:
(6)用t命令执行,如下图,将偏移地址存入si,di;
(7)用t命令执行,如下图,命令执行count次数;
(8)执行结果,如下图:
题目三:查表法,实现一位16进制数转换为ASCII码显示
1.设计:
首先,在数据段中,定义0~9的ASCII码、A~F的ASCII码,并设定一个待转换的数;
(1)用masm程序产生mwn3.obj文件,编译没有错误,如下图:
(2)用link程序产生mwn3.exe文件,没有错误,如下图:
(3)进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;
(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为5,6,7,接着下一个字的内容为0:
(5).用t命令单步执行,前三次为初始化,具体的如下图:
(6)用t命令执行,如下图,将BX指向ASCII码表;
(7)用t命令执行,如下图,AL取得一位16进制数,即ASCII码表中位移;(8)用t命令执行,如下图,高4位清0,只有低4位有效;
(9)用t命令执行,如下图,换码过程;
(10)用t命令执行,输出结果B,如下图:。

相关文档
最新文档