1、实验目的:
通过完成将字节内存单元存储的8个数依次显示在屏幕上的程序设计,掌握循环与子程序设计的方法。
2、实验内容:
将内存单元存储的8个两位16进制数:01H, 25H, 38H, 62H, 8DH, 9AH, BAH, CEH依次显示在屏幕上。
3、实验要求:
(1)显示内存中存储的8个两位16进制数;
(2)在屏幕上显示8个两位16进制数及后缀,两个数之间用“,”号分开;
(3)显示两位16进制数的功能要求用子程序实现;
(4)要求数码转换采用查表法和直接转换法两种不同的方法实现;
(5)截图程序调试及单步运行过程。
4、程序流程图:
5、实验源程序:
data segment
arr db 01H, 25H, 38H, 62H, 8DH, 9AH, 0BAH, 0CEH
ascii db 30h, 31h, 32h, 33h, 34h, 35h, 36h, 37h, 38h, 39h
db 41h, 42h, 43h, 44h, 45h, 46h
data ends
code segment
assume ds:data, cs:code
start:
mov ax, data
mov ds, ax
lea si, arr
mov cx, 8
index:
mov bl, [si]
call print
last:
mov dl, 'H'
mov ah, 2
int 21h
cmp cx, 1
je func
mov al, ','
mov dl, al
mov ah, 2
int 21h
func:
inc si
loop index
mov ah, 4ch
int 21h
print proc near
push cx
push bx
mov cx, 4
shr bl, cl
call solve
pop bx
call table
pop cx
ret
print endp
table proc near
and bx, 0fh
mov dl, [bx + ascii]
mov ah, 2
int 21h
ret
table endp
solve proc near
and bl, 0fh
cmp bl, 0ah
jb next
add bl, 7
next:
add bl, 30h
mov dl, bl
mov ah, 2
int 21h
ret
solve endp
code ends
end start
6、实验要求分项截图及结果分析:
(1)按照实验要求进行各分项截图;
运行截图:
反汇编:
数据情况:
p命令:
t命令:
(2)实验结果分析。
本程序的输出部分采用子程序完成,其中高位输出采用直接转化法,低位输出采用查表法,再在最后补上’H’和’,’。但是最后一次通过判断,不补’,’