汇编语言程序设计实验报告(8)

2018-12-19 23:36

int 21h call output mov ah,4ch int 21h input proc push ax push bx push cx xor dx,dx lop1: mov ah,01h int 21h cmp al,0dh jz extp1 cmp al,'.' jz lop1 and al,0fh mov cl,al mov ax,dx mov bx,10 mul bx mov dx,ax mov ch,0 add dx,cx next: jmp lop1 extp1: pop cx pop bx pop ax ret input endp

ctotal proc push eax push cx push dx xor cx,cx mov cx,num lop2: lea dx,msg2 mov ah,09h int 21h call input xor bx,bx mov bx,dx lea dx,msg3

第 34 页

mov ah,09h int 21h call input xor eax,eax mov eax,ebx xor ebx,ebx mov bx,dx mul ebx

add total,eax loop lop2 pop dx pop cx pop eax ret ctotal endp

output proc push si push ebx push eax push cx xor cx,cx lea si,tot add si,16 mov eax,total mov ebx,10 lop3: xor edx,edx div ebx mov [si],dl inc cx cmp cx,3 jnz next2 dec si push ax mov al,'.' mov [si],al pop ax next2: cmp eax,0 jz next3 dec si jmp lop3 next3: lea si,tot

mov cx,17 lop4: mov al,[si]

第 35 页

inc si dec cx cmp al,0 jz lop4 dec si inc cx

lop5: mov al,[si] cmp al,'.' jz next4 or al,30h next4: mov dl,al mov ah,02h int 21h inc si loop lop5 pop cx pop eax pop ebx pop si ret

output endp code ends

end start

6、程序执行情况如图4.6所示,输入了3个员工的工作时间和工种系数,计算出一年的工作量为:876.501

图4.6 程序执行情况

五、结论

通过这个实验我进一步熟悉了子程序的定义方法和调用方法。并且通过此实验我学会了如何对小数进行运算。

第 36 页

实验五 子程序和主程序之间的参数传递

一、实验目的

通过定义公共变量的方法实现主程序和子程序之间的参数传递。如在主程序和子程序中都定义一个具有Common和Public属性的数据段,然后将需要传递的参数放在这个段中,这样在主程序和子程序中都可以使用这个段所定义的变量了。

二、实验环境

该试验包括的硬件和软件条件如下: 1、硬件环境

(1)Intel i5 3317U (2)内存4G 2、软件环境

(1)Window XP Professor (2)MASM6.11开发软件

三、实验步骤

1、设计一个子程序模块,将带传递的变量k所在的数据段属性设置成Common,并实现十进制ASCⅡ码到二进制数的转换,将转换结果存放在变量k中。

2、设计一个子程序模块,将带传递的变量m所在的数据段属性设置成Public并实现十进制ASCⅡ码到二进制数的转换,将转换结果存放在变量m中。

3、比较上述两种属性下数据段的区别。

4、设计一个主程序模块,通过子程序调用的方式,将(1)和(2)执行后存放在k和m中的变量值取出来存放在该主程序定义的变量i和j中。

5、对上述程序进行调试,写出调试过程中内存单元和寄存器的变化,并解释为什么?

6、根据上述要求,写出实验报告。

四、实验结果及其分析

1.、设计一个子程序模块,将带传递的变量k所在的数据段属性设置成Common,并实现十进制ASCⅡ码到二进制数的转换,将转换结果存放在变量k中。其源代码如下:

extrn exit:far public input

data1 segment common

第 37 页

k dw ? data1 ends

stack segment para stack db 20h dup(0) stack ends

code segment

assume cs:code,ss:stack,ds:data1 input: push ds mov ax,data1 mov ds,ax xor dx,dx lop: mov ah,01h int 21h cmp al,0dh jz next xor bx,bx and al,0fh mov bl,al mov ax,dx mov cx,10 mul cx add ax,bx mov dx,ax jmp lop next: mov k,dx pop ds jmp exit code ends end

2、设计一个子程序模块,将带传递的变量m所在的数据段属性设置成Public并实现十进制ASCⅡ码到二进制数的转换,将转换结果存放在变量m中。

public m

data2 segment public m dw ? data2 ends

stack segment para stack db 20h dup(0) stack ends code segment

第 38 页


汇编语言程序设计实验报告(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:08-09学年高一上学期期末试题(物理1)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: