- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计实验指导
汇编语言程序设计实验指导
【实验提要】 以下列举的10个实验,都是以Intel的8086及后续系列微处理器的指令系统为核心,采用宏汇编工具MASM6. X以及调试工具DEBUG或DEBUG32,针对本教材所述内容进行相关的上机实践。旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。 (带*号的为选作内容)
实验一
实验目的
内容及步骤
二、8086常用指令练习
1、传送指令
用A命令在内存400H处键入下列内容:
-A 0400
****:0400 MOV AX,1234
****:0403 MOV BX,5678
****:0406 XCHG AX,BX
****:0408 MOV AH,10
****:040A MOV AL,20
****:040C MOV CX,89AB
****:040F XCHG AX,CX
****:0411
-
注:****为段寄存器CS的当前值,内容是不一定的,每行命令以回车键结束。
用U命令检查键入的程序并记录,特别注意左边的机器码与指令的对应关系。
-U 0400
用T命令逐条运行这些指令,每运行一行指令观察各寄存器及IP的变化情况,并注意标志位的变化情况。
-T =0400 (注:=400是表示从偏移地址400处开始单步执行)
-T (不给出地址,则表示接续上一条指令执行)
-T
┇
2、加减法指令:
1)用A命令在内存100H处键入下列内容:
MOV AH,11
MOV AL,22
ADD AL,AH
SUB AL,33
MOV CX,1234
MOV DX,5678
ADD CX,DX
SUB CX,AX
SUB CX,CX
2)用U命令检查键入的程序及对应的机器码。
3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。
3、带进位加减法:
1)用A命令在内存200H处键入下列内容,并用U命令检查:
MOV AH,12
MOV AL,84
MOV CH,56
MOV CL,78
ADD AL,CL
ADC AH,CH
MOV DH,A7
MOV DL,58
SUB DL,7F
SBB DH,34
2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。
3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之。
* 4、BCD码加减法(选作)
1)内容:
MOV AL,65
ADD AL,16
DAA
2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。
注:相加后AL值本来是7B,经DAA指令调整后变为81,即65和16两个BCD码的和。
实验二 内存操作数及寻址方法实验目的
实验内容和步骤
实验三 数据串传送和查表程序实验目的
实验内容及步骤
.model small
.stack
.data
str1 db ABCDEFGHIJ ;待显示的内存区内容
str2 db Please input the number you will display:,10,13,$
.code
.startup
mov ah,9
mov dx,offset str2
int 21h ;显示STR2字符串的内容,即提示信息
mov ah,1
int 21h ;输入待显示的字符序号(0-9)
mov bx,offset str1
sub al,30h
xlat ;查STR1表,对应序号的字符ASCII码进入AL
mov dl,al
mov ah,2
int 21h ;显示对应字符
.exit 0
End
2、程序汇编通过后,在运行过程中输入0-9的任意数字,显示STR1字符串中对应位置 的字符。
3、在DEBUG环境中,用P命令调试执行该程序,察看AL寄存器的变化情况及结果的输出, 分析其执行过程。
二、数据串传送程序
1、编辑下列程序:
.model small
.stack
.data
str1 db abcdefghijklmn ;源串定义
lengs equ $-str1
str2 db lengs dup (?),$ ;目标串
.code
.startup
mov ax,ds
mov es,ax ;使DS和ES为同一个段
cld
lea si,str1
lea di,str2
mov cx,lengs
rep movs
文档评论(0)