东华大学微机实验报告答案(软件)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

实验一DEBUG的启动及其基本命令的使用实验二内存操作数及寻址方法

实验三汇编语言程序的调试与运行

实验四查表程序设计

实验五系统功能调用

实验六分支程序设计

实验七循环程序设计

实验八子程序设计

实验九综合程序设计

实验心得体会

参考文献

实验一 DEBUG的启动及其基本命令的使用

源程序:(指导书中给出)

DA TA SEGMENT

STRING1 DB 'Move the cursor backward'

STRING2 DB 'Move the cursor backward'

MESS1 DB 'Match.',13,10,'$'

MESS2 DB 'No Match.',13,10,'$'

DA TA ENDS

STACK SEGMENT STACK

DB 40 DUP (?)

STACK ENDS

PROGNAM SEGMENT

ASSUME CS:PROGNAM,DS:DA TA,ES:DA TA,SS:STACK

MAIN PROC FAR

START: PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AX,STACK

MOV SS,AX

LEA SI,STRING1

LEA DI,STRING2

CLD

MOV CX,25

REPZ CMPSB

JZ MA TCH

LEA DX,MESS2

JMP SHORT DISP

MATCH: LEA DX,MESS1

DISP: MOV AH,09h

INT 21H

RET

MAIN ENDP

PROGNAM ENDS

END START

运行结果:

用DEBUG调试将输出字符串改为‘No Match’

用E指令修改“backward”为“forward”

再次用d命令查看修改结果。

用g命令运行程序

实验二内存操作数及寻址方法

1、(1)程序说明:设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用字处理程序编辑程序。

(2)调试说明:对SP的地址分配不到2000,计算机自动分配为0000,此时我就人为的把堆栈的首地址定义为2000。

(3)写出源程序清单和执行结果:

源程序:

STACK SEGMENT STACK

DW 100 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME SS:STACK,CS:CODE

START:MOV AX,3000H

MOV BX,5000H

MOV SP,2000H

PUSH AX ;将AX中的内容压栈

MOV AX,BX ;BX中的内容给AX

POP BX

MOV AH,4CH

INT 21H

CODE ENDS

END START

用debug调试结果:

2、程序说明:用masm和link 对以下程序进行汇编和连接,调试程序在DEBUG 调试程序状态下进行。用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。

源程序:

DA TA SEGMENT

ORG 0300H

A D

B 12H,23H,34H,45H,56H,67H,78H,89H,9AH

DA TA ENDS

PROGNAM SEGMENT

ASSUME CS:PROGNAM,DS:DA TA

START: MOV AX,DATA

MOV DS,AX

MOV BX,0300H

MOV AX,0300H ;立即数寻址

MOV AX,[0300H] ;存储器寻址方式中的直接寻址方式

MOV AX,[BX] ;寄存器间接寻址

MOV SI,2

MOV AX,0001[BX] ;基址寻址

MOV AX,[BX][SI] ;基址加变址

MOV AX,0001[BX][SI] ;带偏移量的基址加变址

MOV AH,4CH

INT 21H

PROGNAM ENDS

END START

用debug调试结果:

实验三算术运算指令

1、程序说明:编写三个完整的汇编语言源程序,完成以下计算。其中X、Y、Z、R、W均为存放16位带符号数单元的地址。

(1)Z←W+(Z-X)

(2)Z←W-(X+6)-(R+9)

(3)Z←(W*X)/(Y+6),R←余数

2、调试说明:当编译完成后,计算机未能生成.OBJ的文件,经检查错误发生在ADD使用上,我把两个寄存器操作数同时用在ADD语句里,结果出错了。把ADD语句稍作写该后,程序运行正确。

3、写出源程序清单和执行结果

本实验我们只做前两个,即:(1)Z←W+(Z-X);(2)Z←W-(X+6)-(R+9)

源程序:

(1) Z←W+(Z-X)

DA TA SEGMENT

X DD 0001H

Z DD 0003H

W DD 0005H

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DA TA

START: MOV AX,DA TA

MOV DS,AX

MOV AX,X

MOV BX,Z

SUB BX,AX

MOV AX,W

ADD BX,AX

MOV Z,BX

MOV AH,4CH

INT 21H

CODE ENDS

END START

用debug调试结果:

相关文档
最新文档