logo资料库

寻址方式与基本指令实验.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
2.1 寻址方式与基本指令实验 2.1.1 实验目的 1、熟悉 80x86 寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。 2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。 3、熟悉 Microsoft 的 DEBUG 或 Borland 的 Turbo DEBUG 调试工具的使用方法 2.1.2 实验预习要求 1、认真阅读本书第一部分第 1 章,熟悉汇编语言程序设计上机步骤。 2、认真阅读本书第三部分,熟悉 DEBUG 调试工具的使用方法。 3、复习 80x86 操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。 4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题 除外),以便在实验时进行验证。 2.1.3 实验内容 1、读懂下列源程序,使用 EDIT 生成名为 EX11.ASM 的源程序,汇编生成 EX11.OBJ 文件和 EX11.LST 文件,连接生成 EX11.EXE 文件;用 EDIT 打开 EX11.LST 文件,了解.LST 文件包含的信息;使用 DEBUG 调试工具单步执行 EX11.EXE 程序,注意观察 IP 值的变化,并回答下列问题。 (1)程序装入后,代码段寄存器 CS 的内容为________H,代码段第一条可执行指令 MOV AX, DATA 对应的机器代码为__________H,它是一个________字节指令,注意观察执行该指令时 IP 值的变化情况,该指令源操作数 DATA 的寻址方式是__________,其值为__________。 (2)执行完 MOV DS, DATA 指令后,数据段寄存器 DS 的内容为________H,源程序在数据段中 定义的数据 82H、68H 和 88H 被装入的存储单元的物理地址分别为________H、________H 和 ________H。 (3)程序中第一条 ADD AL, [BX] 指令对应的机器代码为__________H,它是一个________字节 指令,注意观察执行该指令时 IP 值的变化情况;该指令中源操作数的寻址方式为__________, 该操作数所在存储单元的逻辑地址(DS): (BX)为__________,其物理地址为__________H;执 行完该指令后(AL)=______H,CF=______,OF______,ZF______,SF______,AF______, PF______;若两操作数为无符号数,计算结果是否正确_______?若两操作数为带符号数,计 算结果是否正确________?若计算结果正确,结果是正数还是负数______? (4)执行完第二条 ADD AL, [BX] 指令后(AL)=______H,CF=______,OF______,ZF______, SF______,AF______,PF______;若两操作数为无符号数,计算结果是否正确_______?若两 操作数为带符号数,计算结果是否正确________? (5)指令 MOV SUM, AL 中目的操作数的寻址方式为__________。该指令执行完后,注意观察 (DS):0003H 单元中值的变化,该单元的值变为________H。 DATA DATA CODE DB ? SEGMENT NUM DB 82H, 68H, 88H SUM ENDS SEGMENT ASSUME CS:CODE, DS:DATA START: MOV MOV MOV AX, DATA DS, AX BX, OFFSET NUM
AL, [BX] BX AL, [BX] BX AL, [BX] SUM, AL AH, 4CH 21H MOV INC ADD INC ADD MOV MOV INT ENDS END START CODE 2、读懂下列源程序;编辑、汇编、连接生成 EX12.ASM、EX12.OBJ、EX12.LST、EX12.EXE 文件;使 用 DEBUG 单步执行 EX12.EXE 文件,并回答以下问题。 (1)代码段的前三条指令 MOV AX, STACK、MOV SS, AX 和 MOV SP, LENGTH STL 的功能为 堆栈初始化,试问执行完这三条指令后,堆栈栈底所在单元的逻辑地址(SS): (SP)为________; 执行 PUSH AX 指令后堆栈指针寄存器(SP)=______H,此时,(SS): (SP+1)和(SS): (SP)单元的 值为_______H;执行完 PUSH BX 后(SP)=______H,此时,(SS): (SP+1)和(SS): (SP)单元的值 为_______H;执行完 POP AX 后(SP)=______H;执行完 POP BX 后(SP)=______H;此时 (AX)=______H,(BX)=______H。请读者通过对堆栈操作指令执行情况的观察,进一步掌握进、 出栈操作过程。 (2)执行 ADD AX, BX 指令后(AX)=________H,CF=______,OF______,ZF______,SF______, AF______,PF______(注意考虑 PF 值与计算结果高 8 位有无关系);若两操作数为无符号数, 计算结果是否正确_______?若两操作数为带符号数,计算结果是否正确________? (3)执行 AND AX, BX 指令后(AX)=________H,CF=______,OF______,ZF______,SF______, AF______,PF______。 STACK SEGMENT stack STL DW 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START: MOV MOV MOV AX, STACK SS, AX SP, LENGTH STL ;表达式“LENGTH STL”的功能为计算 STL 中定义的变量的个数, ;汇编后其值为 100H ,详见教材 5.2.2 MOV MOV PUSH PUSH ADD POP POP AND MOV AX, 0101101100001010B BX, 0100110010100011B AX BX AX, BX AX BX AX, BX AH,4CH
CODE 21H INT ENDS END START 3、指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE)给出的出错信息,改正后再上机 验证。 (1) MOV (3) MOV (5) ADD (7) PUSH (9) MOV 有关常见汇编错误的详细内容见本书第三部分第 3 章“汇编语言程序常见汇编错误分析”。 BP, BL [BX],20H AX,[SI+DI] 2000H CS,AX (2) MOV (4) INC (6) SHL (8) POP (10) MOV [BX],[BP] [SI] AX,3 AL DS,1000H 2.1.4 实验报告要求 1、写出任务 1 和任务 2 中所有问题的正确答案;对实验前做错或做不出来的问题,说明通过上机操作 对这些问题有哪些新的认识。 2、写出任务 3 中 10 条错误指令的错误原因,对可以改正的指令给出其正确形式,并分别记录汇编程序 对每条错误指令给出的出错信息。 3、简要说明汇编语言程序设计的步骤,每一步使用什么工具软件,生成什么类型的文件。 4、写出实验小结,内容包括实验心得(收获)、实验中遇到的问题及解决办法、不足之处或今后应注意 的问题等。
分享到:
收藏