合肥工业大学汇编程序设计实验报告完整代码 下载本文

附加题二:完成 BX中1 的个数的统计。

五. 实验体会

通过本次实验,了解了使用debug的各种指令。同时在debug下进行编程,比较麻烦。由于是第一次编写汇编程序,还是需要多练习。

实验二 汇编语言程序设计(顺序、循环)

一. 实验目的

1、掌握顺序和循环程序结构和设计方法;

2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

二. 实验内容

1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能: ①计算表达式值(V–(X*Y+Z-720))/X;

②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。 2、求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)

3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有‘asm’子串。如果有,输出‘Yes’;否则,输出‘No’)。

三. 实验过程和程序

1、计算表达式值(V–(X*Y+Z-720))/X; data segment x dw 021ch y dw 0001h z dw 0ffffh v dw 0438h w dw 0000h sum1 dw ? sum2 dw ? data ends

assume cs:code,ds:data code segment start: mov ax,data mov ds,ax

MOV AX,x IMUL Y ; x*y MOV CX, AX

MOV BX, DX MOV AX, Z CWD

ADD CX, AX

ADC BX, DX ; x*y+z SUB CX, 540 ;?

SBB BX, 0 ; x*y+z-540 MOV AX, V CWD SUB AX, CX

SBB DX, BX ; v-(x*y+z-540) IDIV X ; (v-(x*y+z-540))/x

mov sum1,ax mov sum2,dx

mov ax,4c00h int 21h code ends end start

2、求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来) data segment db 7,49 dup(6) max db ? min db ? result db 0 data ends

assume cs:code,ds:data code segment start: mov ax,data mov ds,ax

mov ax,0 mov cx,50 mov di,0 again: mov bl,[di]

mov bx,0

add di,1 add ax,bx loop again mov bl,50 div bl mov result,al

mov di,50 max2:sub di,1 mov cx,50 mov si,0 mov al,[di] max1: cmp al,[si] jb max2 add si,1 loop max1 mov max,al

mov di,50 min2:sub di,1 mov cx,50 mov si,0 mov al,[di] min1: cmp al,[si] jnb min2 add si,1 loop min1 mov min,al

mov ax,4c00h int 21h code ends end start