文档介绍:微机原理实验报告
班级: 无85班
学号: 981157
姓名: 尹晓东
实验目的
熟悉pentium微处理器指令系统和寻址方式
掌握汇编语言程序的编程与调试方法
实验内容
结合作业第二题熟悉pentium微处理器实模式下算术与逻辑运算指令的功能,用debug逐条观察各个指令执行前后的相关寄存器的标志位的变化。
下列程序的功能是求一组十进制无符号数(2位数)的最大值,读懂该程序。(见附录)
用debug跟踪,调试上述程序
用u命令列出反汇编程序,与源程序清单比较
跟踪到语句12,检查语句执行后ds寄存器的变化
语句12执行后,发命令d ds:0,检查显示的内容是否与程序数据段定义的单元内容一致。
继续跟踪程序,检查程序执行过程中ax,dx等寄存器的变化
将程序的功能改为求最小数
如果block单元存的数据是压缩bcd码,修改上述程序。
实验报告要求
画出实验内容2中程序的框图
将实验内容2程序的block单元存放的数据改为压缩bcd码,列出修改后的程序清单。
实验内容3的程序说明和程序清单
实验数据及结果
求最大数的程序框图
初始化DSDATA
读入数据地址和长度: SIBLOCK, CXCOUNT
读入第一个数据: DX BLOCK[SI],并调整SI和CX
读入后一个数据: AXBLOCK[SI]
YES
NO
DX > AX?
存储目前最大数: DXAX
保存最大数: [BX] DX
CXCX-2, CX=0?
YES
NO
读入高位: BXOFFSET MAX, DL[BX]
显示高位: AH2, INT 21H
显示低位
退回DOS: AH4CH, INT 21H
结束
2. 将程序中的存储数改为压缩BCD码
data segment para
block db 52h,14h,56h,85h,34h
db 63h,38h,70h,18h,69h
count equ $-offset block
max db 1 dup(?)
data ends
cseg segment
assume cs:cseg,ds:data
start proc far
mov ax, data
mov ds, ax
mov si, offset block
mov bx, offset max
mov cx, count
mov dl, [si]
inc si
dec cx
mov ah, 0
mov dh, 0
comp: lodsb
cmp dx, ax
jg next
mov dl, al
next: p
mov [bx], dl
print: mov bx, offset max
mov dl, [bx]
mov cl, 4
shr dl, cl
add dl, 30h
mov ah, 2
int 21h
mov dl, [bx]
and dl, 0fh
add dl, 30h
mov ah, 2
int 21h
mov ah, 4ch
int 2