微机软件实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
系班级学号姓名
成绩
实验一内存操作数及寻址方法
1、(1)程序说明:设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用字处理程序编辑程序。
(2)调试说明:对SP的地址分配不到2000,计算机自动分配为0000,此时我就人为的把堆栈的首地址定义为2000。
(3)写出源程序清单和执行结果:
DATA SEGMENT
DB ?
DATA ENDS
STACK SEGMENT AT 2000H
DB 5 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START :
MOV DX,DATA
MOV DS,AX
MOV AX,STACK
MOV SP,AX
MOV AX,3000H
MOV BX,5000H
PUSH AX
PUSH BX
POP AX
POP BX
MOV AH,4CH
INT 21H
CODE ENDS
END START
2、(1)程序说明:用masm和link 对以下程序进行汇编和连接,调试程序在DEBUG调试程序状态下进行。用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。
(2)程序清单:
DATA SEGMENT
ORG 0300H
A D
B 12H,23H,34H,45H,56H,67H,78H,89H,9AH
DATA ENDS
PROGNAM SEGMENT
ASSUME CS:PROGNAM,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,BX
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
(3)执行结果:
当数据传送完毕时,AX=4C00H。
实验二算术运算指令
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)DATA SEGMENT
X DW ?
Z DW ?
W DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,X
SBB Z, AX
MOV W,AX
ADD Z,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
由于X、Z、W的值未明确,计算机默认为0,所以Z=0000H。
(2)DATA SEGMENT
X DW 01H
Z DW ?
W DW 12H
R DW 01H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,X
ADD AX,6
SBB W,AX
MOV BX,R
ADD BX,9
SBB W,BX
MOV AX,W
MOV Z,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
结果:Z=0001H
(3)DATA SEGMENT
X DW 01H
W DW 12H
Y DW 01H
R DW ?
Z DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX
MOV AX,X
IMUL W
MOV BX,Y
ADD BX,6
IDIV BX
MOV R,DX
MOV Z,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
结果:Z=0002H,R=0004H。