没有合适的资源?快使用搜索试试~ 我知道了~
2015年微机原理软件实验报告.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 196 浏览量
2021-10-02
10:51:54
上传
评论
收藏 600KB PDF 举报
温馨提示
试读
39页
2015年微机原理软件实验报告.pdf
资源推荐
资源详情
资源评论
1
信息与通信工程学院
微机原理软件实验报告
班 级
:
姓 名
:
学 号
:
日 期
: 2015 年 11 月
第 2 页
实验 B 分支、循环程序设计
一、实验目的
1. 开始独立进行汇编语言程序设计;
2. 掌握基本分支,循环程序设计;
3. 掌握最简单的 DOS 功能调用。
二、实验内容
1. 安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不
超过 9。
2. 编写一个程序统计数据区中正数,负数和零的个数。
3. 将统计结果在屏幕上显示。
4. (选作题)统计出正奇数、正偶数,负奇数、负偶数以及零的个数。
三、预习思考
1. 十进制数 0 ~ 9 所对应的 ASCII 码是什么? 如何将十进制数 0 ~ 9
在屏幕上显示出来?
0~9 分别对应 ASCII 码的 30H~39H;
由于数字 0~9 的 ASCII 码值与其代表的数值之间相差 30H,因此将其
减去 30H 即可得到以非压缩型 BCD 数形式表示的十进制数。
2. 如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?
一是直接用 CMP 命令和 0 比较 (CMP X,0 ) ,然后检验标志位 CF,CF=1
则 X 为负数, CF=0 接着检验 ZF,ZF=1 则 X 为零, ZF=0 则 X 为正数;
二是使用逻辑或移位运算, 和 0 相比是否相等, 用数和 10000000 相与,
取出符号位判断,可区分正负。
第 3 页
四、实验过程
流程图
源代码
data segment
array db
1,4,3,2,5,7,-1,-2,-6,0,0,0
;自定义数组
length EQU $-array ; 数组长度
pnum db ? ; 正数个数
nnum db ? ; 负数个数
zero db ? ; 零的个数
peven db ? ; 正偶数个数
podd db ? ; 正奇数个数
neven db ? ; 负偶数个数
nodd db ? ; 负奇数个数
POSICHAR DB 'Positive: $'; 用于打印字符串定义
NEGTCHAR DB 'Negtive: $'
第 4 页
ZEROCHAR DB 'Zero: $'
EVENCHAR DB ' Even: $'ODDCHAR DB ' Odd: $'
CR DB 0DH,0AH,'$'; 回车换行的 ASCII 码
data ends
;--------------------------------------------------------
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov si,offset array ;offset 指令取 array 的偏移地址
dec si ; 偏移地址先减 1
mov cl,length ; 数组长度赋予 CL
xor al,al
lop:cmp cl,0 ; 余下数组长度不为 0,则继续循环
je print;cl 为 0 跳出循环
inc si; 偏移地址加 1,比较下一位数字
dec cl; 余下数组长度减 1
mov bl,[si]; 采用寄存器间接寻址方式
cmp bl,0; 和 0 比较
jg posi; 正数跳转
jz zo;零跳转
jl neg; 负数跳转
posi:inc pnum; 正数个数加 1
test bx,01h; 检测最后一位是否是 0
jz pep; 是 0,即为偶数则跳转至 pep
inc podd; 不是 0,则正奇数个数加 1
jmp lop
pep:inc peven; 正偶数个数加 1
jmp lop
zo:inc zero; 零的个数加 1
jmp lop
neg:inc nnum; 负数个数加 1
test bx,01h; 检测最后一位是否是 0
jz nep; 是 0,即为偶数则跳转至 nep
第 5 页
inc nodd; 不是 0,则负奇数个数加 1
jmp lop
nep:inc neven; 正偶数个数加 1
jmp lop
print:mov ah,09h ; 打印正数个数
mov dx,offset POSICHAR
int 21h; 系统功能调用
mov ah,02h
mov dl,pnum
add dl,30h
int 21h
mov ah,09h
mov dx,offset eventchar
int 21h
mov ah,02h
mov dl,peven
add dl,30h
int 21h
mov ah,09h
mov dx,offset oddchar
int 21h
mov ah,02h
mov dl,podd
mov dl,30h
int 21h
mov dx,offset cr
mov ah,09h
int 21h
;--------------------------------------------------------
mov ah,09h ; 打印负数个数
mov dx,offset negtchar
int 21h; 系统功能调用
剩余38页未读,继续阅读
资源评论
资料大全
- 粉丝: 14
- 资源: 26万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功