用汇编语言实现算术的计算与输出.doc
文本预览下载声明
上海电力学院实验报告
计算机硬件实验课程
题目: 算术的计算与输出
班级:
姓名:
学号:
实验室注意事项:
1)保持实验室清洁,不能随意乱扔垃圾
2)不能喧哗
3)爱护设备,不能随意乱动实验箱上各种拨码开关,否则会有危险
4)实验结束要求关闭电脑,整理好实验箱,切断电源
一、实验目的
1)运用汇编语言实现算术1+2,将结果按十进制数输出
2)修改程序实现6+9,将结果按十六进制数输出
3)将上述程序的结果按十进制数输出
二、微机原理软件实验一般步骤及注释
1)PC---〉开始---〉程序---〉附件---〉命令提示符
2)cd\ ;返回c盘根目录
3)cd dvcc ;进入c:/dvcc 目录下
4) edit abc.asm ;新建,并且进入编辑abc.asm文件
5)file---〉save ;文件默认保存在c:/dvcc 目录下
6)file---〉exit ;退出编辑状态,并自动返回命令提示符界面
7)masm abc.asm ;输入回车,编译文件,如果没有出错,就会自动生成abc.obj文件
8)link abc.obj ; 数个回车,链接,不出错则生成abc.exe
9)abc ;执行
10)debug abc.exe ;debug 调试,查看内部寄存器状态、段地址、偏移地址等情况,-t 单步执行;-u 反汇编;-q 退出debug状态,返回命令提示符
三、实验所需的文件
(1)masm.exe (2)link.exe
如果将c:\dvcc目录下的这两个文件拷贝到e盘,也可以做,进入目录为:e:\
命令方式为: e:回车。
四、实验设计与实现
1)运用汇编语言实现算术1+2,将结果按十进制数输出
解题思路:将1赋予寄存器ax,将2赋予寄存器bx中,运用add语句来实现,再将累加器内容加30h,将累加器内容输出。具体程序如下所示:
data segment
data ends
stack segment para stackstack
db 100 dup(?)
stack ends
code segment
main proc far
assume cs:code,ds:data,es:data,ss:stack
start: mov ax,0
mov ax,data
mov ds,ax
mov es,ax
mov ax,0001h
mov bx,0002h
add ax,bx
add al,30h
mov dl,al
mov ah,02h
int 21h
mov ax,4c00h
int 21h
code ends
end start
实验结果如下所示:
图1-1
2)编写程序实现6+9,将结果按十六进制数输出
解题思路:将6赋予寄存器ax,将9赋予寄存器bx中,运用add语句来实现,再将累加器的值再加37h,输出最终累加器里的值。具体程序如下所示:
data segment
data ends
stack segment para stackstack
db 100 dup(?)
stack ends
code segment
main proc far
assume cs:code,ds:data,es:data,ss:stack
start: mov ax,0
mov ax,data
mov ds,ax
mov es,ax
mov ax,0006h
mov bx,0009h
add ax,bx
add al,37h
mov dl,al
mov ah,02h
int 21h
mov ax,4c00h
int 21h
code ends
end start
实验结果如下图所示:
图1-2
3)将上述实现6+9的程序按十进制数输出
解题思路:将6赋予寄存器ax,将9赋予寄存器bx中,运用add语句来实现,将累加器中的内容除以十取余,实现将个位和十位分离。具体程序如下所示:
data segment
data ends
stack segment para stackstack
db 100 dup(?)
stack ends
code segment
main proc far
assume cs:code,ds:data,es:data,ss:stac
显示全部