学号:
20155104008
实验报告
学 院:
计算机与信息技术学院
专 业:
软件工程
年 级:
姓 名:
2015 级
魏强
课程名称:
汇编语言
实验题目 实验一 熟悉指令系统及 DEBUG 的使用
实验目的
熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址
方式的理解;能熟练使用 DEBUG 中的命令对指令进行反汇编,观
察并了解机器代码。
1.掌握 DEBUG 的操作命令
实验内容
2.熟悉指令的书写格式、功能。
无
流程图
(1)
mov ax,4e20h
add ax,1416h
mov bx,2000h
add ax,bx
mov bx,ax
add ax,bx
mov ax,001ah
mov bx,0026h
add al,bl
add ah,bl
add bh,al
mov ah,0
add al,bl
add al,9ch
(2)mov ax,1
add ax,ax
jmp 2000:0003
第一个程序段写入 debug 中,逐条 t 命令单步执行
源程序
调试过程
第二个程序段使用 t 命令执行 16 次 t 命令
2 的 8 次方为 100h
实验结果
实验题目 实验二 掌握编写完整的汇编语言源程序的方法
实验目的
实验内容
1.熟悉汇编语言源程序的编辑、汇编、连接、运行的上机全过程,
掌握汇编语言源程序的格式。
2.掌握使用 DOS 功能调用输入、输出字符和返回 DOS 的方法。
1、将下面代码保存为 t1.asm 文件,将其生成可执行文件 t1.exe。
2、用 debug 跟踪他 t1.exe 的执行过程,写出每一步执行后,相关
寄存器的内容和栈顶的内容。
3、键盘接收一个字符,屏幕端显示一个字符的代码段
无
流程图
DATAS SEGMENT
db'welcome to masm','$';此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
源程序
START:
MOV AX,DATAS
MOV DS,AX
mov ah,01h
int 21h
mov ah,2
mov bh,0
mov dh,5
mov dl,12
int 10h
mov bx,datas
mov ds,bx
mov dx,0
mov ah,9
int 21h;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
调试过程
点击保存按钮后运行,然后输入一个字符显示 welcome
to masm
实验结果
实验题目 实验三 循环程序设计
实验目的
对表格中的记录进行全面更新
编程,将data段中的数据按格式写入到table段中,并计算 21 年
的人均收入(去整),结果按照下面的格式保存到table段中。
实验内容
无
流程图
data segment
db
'1975','1976','1977','1978','1979','1980','1981','1982',
'1983'
db
'1984','1985','1986','1987','1988','1989','1990','1991',
'1992'
db '1993','1994','1995'
;年份(4字节)
dd
源程序
16,22,382,1356,2390,8000,1600,24486,50065,97479,140417,1
97514
dd
345980,590827,803530,1183000,1843000,2759000,3753000,464
9000,5973000
dw
3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,
5635,8226
dw 11542,11430,15257,17800
;员工人数(2字节)
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
assume cs:code,ds:data,es:table
code segment
start :
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov bx,0
mov di,0
mov si,0
mov cx,21
s:
;读取年份放到table
mov ax,ds:[di]
mov es:[bx],ax
mov ax,ds:[di+2]
mov es:[bx+2],ax
;读取员工数放到table
mov ax,ds:[00a8h+si]
mov es:[bx+000ah],ax
;读取收入放到table
mov ax,ds:[di+0054h]
mov es:[bx+5],ax
mov dx,ds:[di+0054h+2] ;高位字
mov es:[bx+5+2],dx
div word ptr ds:[00a8h+si]
mov es:[bx+000dh],ax
add di,4h
add si,2h
add bx,10h
loop s
mov ax,4c00h
int 21h
code ends
;年份,收入下一行
;员工下一行
;表格下一行
end start
调试过程
实验结果