西安财经学院信息学院
《汇编语言程序设计》
学生姓名: 学 号: 班 级:
专 业: 计算机科学与技术
完成日期: 2015年6月24日
题目一(顺序):
1.编写完成表达式M=500-A+B的程序设计,其中变量都是字数据。 题目分析
顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构首先,在数据段中,定义x,y,z分别存500,4,5,要求结果送往M中,先将运算结果送往AX,最后将寄存器AX的内容传送到S中。编写完成表达式M=500-A+B.其中变量都是字数据. 源程序代码
data segment x dw 500 y dw 4 z dw 5 M dw ? data ends code segment main proc far
assume cs:code,ds:data start:
mov ax,data mov ds,ax mov ax,x SUB ax,y ADD ax,z mov M,ax ret main endp
code ends end start 调试分析过程:
(1).用masm程序产生WL1文件,没有错误,如下图:
(2).用link程序产生WL1.exe文件,如下图。
(3).用u命令反汇编,查看代码段,数据段所在内存单元;
(4).用T命令单步执行该程序,实现初始化。
(4).用T命令单步执行该程序,看到将500送AX.
(5)执行T命令,可以看出将相减后的数据送AX。
(6)使用D命令查看数据段,从图中可以看出最终结果存储在0007和0008内。
(7)运行结束,输入Q命令退出DEBUG.
题目二(选择):编程对已知的5个数据,找出最小值。 题目分析
本程序需采用冒泡排序算法,从第一个数开始,依次和后面四个数比较,如果次序正确则不作任何操作,如此序不对,则使两个数交换位置。冒泡法
从第一个元素开始,依次对相邻的两个元素进行比较,使前一个元素不大于后一个元素;将所有元素比较完之后,最大的元素排到了最后;然后,除掉最后一个元素之外的元素依上述方法再进行比较,得到次大的元素排在后面;如此重复,直至完成就实现元素从小到大的排序。n个数需要n-1遍比较,第一遍比较出一个最大(或最小)数,第二遍对剩下的数进行比较,得到一个次最大(或次最小)数 ,第n-1遍比较出最后两个数的大小顺序,至此整个数组全部排好序。每一遍比较需要比较的次数为要比较数减一。如n=5,第一遍比较次数为4(内循环),第二遍比较次数为3 (内循环) ,第三遍比较次数为2 (内循环) ,第四遍比较次数为1 (内循环) 。
源程序代码: DATA SEGMENT
buf db 7,2,3,4,5;输入字符串缓冲区 count equ $-buf
msgd db \显示信息,提示输出最小值 DATA ENDS
CODE SEGMENT
assume cs:CODE, ds:DATA MAIN PROC FAR ;主程序入口 mov ax, dseg mov ds, ax
lea si,buf;数据起始地址存入SI mov cx,count;数据个数存入CX中 mov bl,[si];找最小值存入BL中 dec cx next:
cmp bl,[si+1] jbe next1
mov bl,[si+1] next1:inc si loop next
lea dx,msgd;显示信息,提示输出最小值 mov ah,9 int 21h
call disp;用十六进制形式最小值 mov ah,1;按任意键退出 int 21h
mov ax, 4c00h ;程序结束,返回到操作系统系统 int 21h MAIN ENDP
汇编语言
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)