五. 实验体会
通过这次实验的练习,我熟悉了在DEBUG的环境下,汇编程序中的命令,并且学会调试运行汇编语言源程序,掌握8086/8088的寻址方式及多字节数据的处理方法。虽然自己动手实现了简单的计算的中间出现了很多错误,但是在查阅书本以及在老师和同学的帮助下完成了实验任务。
实验二 汇编语言程序设计(顺序、循环)
一. 实验目的
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)data segment
x dw 1 y dw 0 z dw 0 v dw 0 sum1 dw ? sum2 dw ? data ends code segment
assume cs:code,ds:data start:
mov ax,data mov ds,ax mov ax,x imul y mov cx,ax mov bx,dx mov ax,z cwd
add cx,ax adc bx,dx sub cx,720 sbb bx,0 mov ax,v cwd
sub ax,cx sbb dx,bx idiv x
mov sum1,ax
mov sum2,dx mov ax,4c00h int 21h
code ends end start 2data segment
grade dw 98,98,96,95,94,93,87,86,85,97,86 data ends code segment
assume cs:code,ds:data start:
mov ax,data mov ds,ax xor ax,ax mov cx,11
mov bx,offset grade
loop1: add ax,[bx] inc bx inc bx loop loop1 mov cx,11 idiv cx
mov bx,ax mov ax,4c00h int 21h Code ends end start 3)DATA SEGMENT
BUF DB 50, ?, 50 DUP(24H) CHAR DB 0AH,0DH,\DATA ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA START:
MOV AX,DATA MOV DS,AX
MOV AH,10 LEA DX,BUF INT 21H
LEA DX,CHAR MOV AH,9 INT 21H
LEA DX,BUF+2 MOV AH,9 INT 21H
MOV AH,4CH INT 21H
四.实验结果(包括必要的截图)