发布时间 : 星期一 文章汇编实验报告—山东大学更新完毕开始阅读
实验一 熟悉汇编环境及调试命令
内容和要求: (1)选取教科书中典型例题(完整程序),用编辑软件在PC机中形成汇编源程序*.ASM文件,然后编译、连接,生成目标文件和可执行文件。
(2)用DEBUG程序进行调试,熟悉动态调试环境和常用命令。 目的:
掌握用编辑软件编辑程序文本的方法;在DOS环境下,熟练掌握用MASM5.0宏汇编程序对ASM文件进行编译、连接等操作步骤;熟悉并掌握用DEBUG调试程序。 实验程序
DATAS SEGMENT
one db 20 dup(32),1,'WELCOME YOU!',7,13,10 count equ $-one DATAS ENDS
STACKS SEGMENT stack'stack' stap db 256 dup(?) top equ this word STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
mov ax, seg stacks;此处输入代码段代码 mov ss,ax
mov sp,offset top mov si,offset one mov cx,count next: mov dl,[si] mov ah,2 int 21h inc si loop next MOV AH,4CH INT 21H CODES ENDS END START 结果
Debug调试:
输入a,进行逐行汇编,输入c, 比较两内存块,输入d,内存信息以16进制显示;输入e,修改内存指定的字节;输入f,可以预置一段内存; 输入g,执行程序;输入h,制算术运算;输入i,从指定端口地址输入;输入l,读盘;输入m,内存块传送;输入n,置文件名;输入o,从指定端口地址输出;输入q,结束DEBUG调试;输入r,显示和修改寄存器;输入s,查找字节串;输入t,跟踪执行;输入u,反汇编;输入w,存盘操作。
实验总结:
1. 通过实验,了解了程序书写,熟悉了MASM环境,编译和运行的方法,对汇编有了初步
认识。
2. 掌握了Debug调试方法,对程序修改有很大帮助,通过练习,熟悉了各调试指令。
实验二 多位十进制数相加求和显示
内容和要求:
将两个多位十进制数(如四位)相加,要求被加数、加数以ASCII码形式按顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前)。要求:将相加结果仍以常用十进制数形式显示在屏幕上。 目的:
学习数据传送、加法运算及十进制数(BCD码)运算调整指令的用法;熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序过程,练习分析程序,会查错。实验程序:
DATA1 SEGMENT
buf db 10 db 0 db 10 dup(0) sum dw ? buff db 10 db 0 db 10 dup(0) sum1 dw ?
tw1 db 'please input the first num:','$' tw2 db 'please input the second num:','$' tw3 db 'sum:','$' ;此处输入数据段代码 DATA1 ENDS
STACKS SEGMENT
;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA1,ss:stacks START:
MOV AX,DATA1 MOV DS,AX mov ax,stacks mov ss,ax pushf
;显示输入a mov ah,9
mov dx,offset tw1 int 21h ;输入buf
;mov dx,seg buf ;mov ds,dx
mov dx,offset buf mov ah,0ah int 21h ;换行 mov ah,2 mov dl,10 int 21h ;换行 mov ah,2 mov dl,10 int 21h
;提示输入b mov ah,9
mov dx,offset tw2 int 21h ;输入buf
;mov dx,seg buf ;mov ds,dx
mov dx,offset buff mov ah,0ah int 21h ;换行 mov ah,2 mov dl,10
int 21h mov ah,2 mov dl,10 int 21h ;显示加法标志 mov ah,9
mov dx,offset tw3 int 21h ;
;以下为加法过程
MOV DI,OFFSET buff+2 MOV SI,OFFSET buf+2 xor dx,dx xor ax,ax
mov dl,ds:[di-1] mov al,ds:[si-1] add di,dx add si,ax mov cx,0
mov ds:[di],cx mov ds:[si],cx push ax push dx
MOV DI,OFFSET buff+2 MOV SI,OFFSET buf+2 pop dx cmp dl,1 je tep2 mov cx,dx dec cx tep1:
mov dx,cx test1: