汇编语言作业(三)计算这三个数的平均值

班级:计算机14-1 姓名:​​许恺 学号:​​2014011329 日期:​​2016.4.1

一、编写程序

1.设有三个无符号的个位数计算这三个数的平均值(截尾取整并将这个平均值显示在屏幕上。

最低要求:三个个位数在数据段中定义,最后结果能显示在屏幕上。

自由发挥:三个个位数从键盘输入输入时有提示(可用9号功能调用输出字符串),输出结果也有提示,结果显示在屏幕上,格式要美观。

1程序清单:

data segment
data ends
code segment
assume cs:code,ds:data
main proc far
start:
mov ah,01h
int 21h
mov dl,al

mov ah,01h
int 21h
mov dh,al

mov ah,01h
int 21h

add al,dl
add al,dh

mov ah,00h
mov bl,3
div bl
mov bl,al

mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h

mov dl,bl
mov ah,02h
int 21h

mov ah,4ch
int 21h
main endp
code ends
end start

2)运结果(截图):

2.编程实现对一个无符号32位数的乘4操作,假定该数乘以4之后仍为一个32位数。

说明:两个其他变量X、Y分别定义为DD型数据,其中X代表32位无符号数:12345678H的首地址,Y代表以上数据乘以4以后结果的首地址。乘法要用移位来实现。

请参见课件中的例题。最后结果存储在内存单元中(无需输出)。

1)程序清单

data segment
x dd 12345678h
y dd ?
data ends
code segment
assume cs:code,ds:data
main proc far
start:
mov ax,data
mov ds,ax

mov ax,word ptr x
mov dx,word ptr x+2

shl ax,1
rcl dx,1

shl ax,1
rcl dx,1

mov word ptr y,ax
mov word ptr y+2,dx
mov ah,4ch
int 21h
main endp
code ends
end start

二、编程体会

感觉基本的掌握了,但是关于移位等指令和运算还不熟,还有一些基本的dos指令还不会,应该在这其他垃圾方面补补课。