- 409
- 0
- 约2.92千字
- 约 8页
- 2016-09-12 发布于重庆
- 举报
西南交大微机接口实验一实验报告
微机原理与接口实验报告(一)
班级:09级计通1班 学 姓名:黄静
实验目的
掌握汇编语言程序的上机过程与debug调试方法
掌握汇编语言运算指令ADD、ADC、SUB、SBB、MUL、IMUL
实验内容
一、比较两个字符串string1和string2所含的字符是否相同。若相同则显示’Match’ ,否则,显示‘No match!’。
1、源程序
datarea segment
string1 db Move the cursor backward.
string2 db Move the cursor backward.
;
mess1 db Match.,13, 10,$
mess2 db No Match!,13, 10,$
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea,es:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov ax,datarea
mov es,ax
;
lea si,string1
lea di,string2
cld
mov cx,25
repz cmpsb
jz match
lea dx,mess2
jmp short disp
match:
lea dx,mess1
disp:
mov ah,09
int 21h
;
ret
main endp
prognam ends
end start
2、按照上课所讲的操作步骤对以上所给源程序进行调试,熟悉上机操作过程。
3、用debug逐条观察各条指令执行前后的相关寄存器及标志位的变化。
标志位的符号表示。
标志名 标志为1 标志为0 OF 溢出(是/否) OV NV DF 方向(减量/增量) DN UP IF 中断(允许/关闭) EI DI SF 符号(负/正) NG PL ZF 零(是/否) ZR NZ AF 辅助进位(是/否) AC NA PF 奇偶(偶/奇) PE PO CF 进位(是/否) CY NC
用debug跟踪,调试上述程序
用u命令列出反汇编程序,与源程序清单比较
跟踪到语句mov es , ax,检查语句执行后ds寄存器的变化
通过跟踪到语句mov es , ax,然后执行后,发现ds寄存器中ES的值发生了变化。
语句mov ds , ax执行前,发命令d ds:0,检查显示的内容是否与程序数据段定义的单元内容一致。
在执行语句mov ds , ax前,发命令d ds:0,检查显示的内容与程序数据段定义的单元内容是一致的。其中“.”代表某些字符的ASC‖码无法显示。
语句mov ds , ax执行后,发命令d ds:0,检查显示的内容是否与程序数据段定义的单元内容一致。
在执行语句mov ds , ax后,发命令d ds:0,检查显示的内容是否与程序数据段定义的单元内容“Move the cursor backward.”是一致
根据你所运行的程序,指明DS和ES的值。数据段偏移地址为000AH至0015H单元的内容。
红色矩形框代表的是执行“数据段偏移地址为000AH至0015H单元的内容。”的命令,而蓝色矩形框代表是“数据段偏移地址为000AH至0015H单元的内容。”
继续跟踪程序,检查程序执行过程中ax,dx等寄存器的变化
通过逐条执行“ax,dx”周围的命令,观察寄存器的变化,得到如上结果。
4、实验数据及结果
实验数据及结果如上图和注释。
二、完成下面的双字乘法程序
MULTCND DW 3206H ;被乘数低位字
DW 2521H ;被乘数高位字
MULTPLR DW 6400H ;乘数
PRODUCT DW 0 ;乘积
DW 0
DW 0
编写源程序并用DEBUG显示结果。是否结果中出现4字,为什么,请说明。
data segment
multcnd dw 3206h,2521h
multplr dw 6400h,0
dw 4 dup(?)
data ends
stack segment para stack stack
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack,es:data
start proc far
begin:
原创力文档

文档评论(0)