简单程序设计(微机原理实验⼀)
实验⼀ 简单程序设计
实验⽬的:
1.掌握8086汇编语⾔程序设计过程
2.掌握8086程序调试⽅法
实验任务与要求:
任务⼀(占总分30%):
1.编辑
利⽤编辑器(记事本,也可采⽤其它编辑器)建⽴⼀个名为ASM1.ASM的⽂本⽂件,内容如下:ASSUME DS:seg1,CS:seg2
seg1 SEGMENT
TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
BUF DB 10 DUP(0)
NUMBER DB 7
ASCII DB 0
X DW 1000H
Y DW 0FFFFH
Z DW 0,0
seg1 ENDS
seg2 SEGMENT
start: MOV AX,seg1
MOV DS,AX
MOV ES,AX
;
(1)查表
LEA BX,TABLE
MOV AL,NUMBER
XLAT
MOV ASCII, AL
;(2)字串传送
MOV CX,10
LEA SI,TABLE
LEA DI,BUF
CLD
REP MOVSB
;
(3)计算(X+Y),结果存Z单元
MOV DX,0
MOV AX,X
ADD AX,Y
ADC DX,0
MOV Z,AX
MOV Z+2,DX
;(4)添加代码,完成任务⼆1,2
;改写程序,将TABLE单元的10个字节数据传送到TABLE+5开始的单元
MOV CX,10
LEA SI,[TABLE + 9]
LEA DI,[TABLE + 14]
STD
REP MOVSB
;添加代码,完成(X+Y)/X,商存Z单元,余数存Z+2单元
MOV DX,0
MOV AX,X
汇编语言如何编程ADD AX,Y
ADC DX,0
MOV Z,AX
MOV Z+2,DX
seg2 ENDS
END start
2.汇编
利⽤汇编器(MASM.EXE)将ASM1.ASM汇编为⽬标⽂件(默认⽂件名为ASM1.OBJ)。
如果有错误返回步骤1。
3.链接
利⽤链接器(LINK.EXE)将ASM1.OBJ链接为可执⾏⽂件(默认⽂件名为ASM1.EXE)。
如果有错误返回步骤1。
4.调试
(1)启动调试器(DEBUG.EXE)。
利⽤DEBUG命令将ASM1.EXE载⼊内存。
利⽤DEBUG命令观察记录数据TABLE、NUMBER、ASCII、X、Y在内存中的形式。
(2)运⾏程序,记录Y与ASCII单元内容。
(3)通过步骤2和步骤3后,利⽤DEBUG命令分别连续、单步、带断点运⾏程序。
任务⼆(占总分20%):
1.改写程序,将TABLE单元的10个字节数据传送到TABLE+5开始的单元。如何实现?
2.添加代码,完成(X+Y)/X,商存Z单元,余数存Z+2单元;运⾏程序,记录商与余数。
预习(预习报告占总分20%):
1. 列出主要DEBUG命令,并写在报告纸上。
2. 按任务⼆1、2中的要求改写程序,并写在报告纸上。
实验报告要求(实验报告占总分30%):
3. 记录任务⼀中实验步骤中要求的操作及其结果,可⽤屏幕拷贝记录,打印后贴在报告中。
4. 根据任务⼆中的要求,写出源程序中的改写部分,并给出运⾏结果,可⽤屏幕拷贝记录,打印后贴在报告中。
5. 回答以下问题:
(1) 在步骤4中怎样才能观察到内存数据?
(2) 计算机中的数据形式是怎样的,DEBUG以什么形式表⽰内存数据?
(3) 如何处理X+Y产⽣的进位?进位存在哪⾥了?
(4) 字串传送时,若两个字串单元存在重叠,如何编程处理?
重要提⽰:必须完成预习任务,⽅可进⼊实验室完成实验。
代码:
代码⼀:
ASSUME DS:seg1,CS:seg2
seg1 SEGMENT
TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
BUF DB 10 DUP(0)
NUMBER DB 7
ASCII DB 0
X DW 1000H
Y DW 0FFFFH
Z DW 0,0
seg1 ENDS
seg2 SEGMENT
start: MOV AX,seg1
MOV DS,AX
MOV ES,AX
LEA BX,TABLE
MOV AL,NUMBER
XLAT
MOV ASCII, AL
;(2)字串传送
MOV CX,10
LEA SI,TABLE
LEA DI,BUF
CLD
REP MOVSB
;(3)计算(X+Y),结果存Z单元
MOV DX,0
MOV AX,X
ADD AX,Y
ADC DX,0
MOV Z,AX
MOV Z+2,DX
seg2 ENDS
END start
代码⼆:
ASSUME DS:seg1,CS:seg2
seg1 SEGMENT
TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H BUF DB 10 DUP(0)
NUMBER DB 7
ASCII DB 0
X DW 1000H
Y DW 0FFFFH
Z DW 0,0
seg1 ENDS
seg2 SEGMENT
start: MOV AX,seg1
MOV DS,AX
MOV ES,AX
;
(1)查表
LEA BX,TABLE
MOV AL,NUMBER
XLAT
MOV ASCII, AL
;改写程序,将TABLE单元的10个字节数据传送到TABLE+5开始的单元MOV CX,10
LEA SI,[TABLE + 9]
LEA DI,[TABLE + 14]
STD
REP MOVSB
;添加代码,完成(X+Y)/X,商存Z单元,余数存Z+2单元MOV DX,0
MOV AX,X
ADD AX,Y
ADC DX,0
DIV X
MOV Z,AX
MOV Z+2,DX
seg2 ENDS
END start
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论