- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
现代微机与接口技术汇编实验
汇编实验报告
实验一 汇编语言程序上机过程
一)实验目的
学会安装Masm32相关的软件,完成将汇编语言源程序录入进计算机、利用MASM32进行汇编,LINK或LINK16进行编译,并用DEBUG调试16位程序,用的全部过程。本实验大家不必了解程序细节,只是为了熟悉开发环境和上机过程。
二)实验内容
1. 按照安装说明中所述,安装好32位汇编程序开发环境和16位汇编开发环境。配置好相关的BAT文件。(本文假设大家是按照安装手册建议的路径安装的)
2. 熟悉16位汇编程序的上机过程。
参照《汇编语言上机过程(自学)》PPT中“16位汇编语言上机过程”的内容,输入,汇编和调试下面的程序(命名为sample16.asm, 程序功能是将BUFF中的值(3C6DH)以十六进制的形式打印到屏幕上)
.8086
.MODEL SMALL
.STACK
.DATA
BUFF WORD 3C6DH
STRING BYTE PRINT HEX.,0AH,0DH,$
.CODE
START: MOV AX,@DATA
MOV DS,AX
MOV DX, OFFSET STRING
MOV AH, 09H
INT 21H
LEA SI,BUFF
MOV BX,[SI]
MOV CH,4
A1: MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL A2
ADD AL,7H
A2: MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ A1
MOV AH,4CH
INT 21H
END START
注:执行文件后,用DEBUG SAMPLE16.EXE命令将该程序调入到DEBUG环境中调试。
用U命令察看源代码
用D命令察看数据段的数据
用R命令察看寄存器状态
用T命令单步跟踪程序执行
用G命令设置断点,调试软件中断指令(int 21h)(不要用T)
3. 熟悉32位汇编语言上机过程
参照《汇编语言上机过程(自学)》PPT中“32位汇编语言上机过程”的内容,输入,汇编和调试下面的程序(命名为jcctest.asm, 程序功能是输入1、2或3,根据输入不同打印不同的句子,输入3则退出)。熟悉Masm32 editor 和ollydbg的使用方法。
.386 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
include \masm32\masm32.h
.data
var DD ?
table DWORD ONE
DWORD TWO
DWORD THR
.code ; Tell MASM where the code starts
start: ;The CODE entry point to the program
mov var, input(Enter number(1-3) here:)
mov eax, uval(var)
cmp eax,1
jb start
cmp eax,3
ja start
dec eax
shl eax,2
mov esi, offset table
add esi,eax
mov eax,[esi]
jmp eax
ONE:print chr$(you input 1,13,10)
jmp start
TWO:print chr$(you input 2,13,10)
jmp start
THR:inkey
exit 0
end start
4. 分别写16位汇编程序和32位汇编程序,从键盘输入一个字符串,然后换行后将该字符串输出到屏幕。
32位代码:
.386
.model flat,stdcall
include \masm32\masm32.h
.data
var DD ?
.code
s
文档评论(0)