- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息与通信工程学院
微机原理软件实验报告(二)
班 级:
姓 名:
学 号:
序 号:
日 期: 2014年 月
1)掌握 MASM 的操作步骤,能够将源程序编译成可执行文件
3)掌握简单的汇编语言程序的设计
二、实验任务
1. 编一程序,在显示器上显示256个ASCII代码,要求显示格式为每行显示16个字符,两个ASCII字符间空一格。
2. 试编一程序,把地址偏移量为 100H 单元开始的 256 个单元分别写入: 00H,01 H,02H,03H,…,FFH 数据。统计写入的数据块中 0 元素、正元素、负元素的个数,并分别把 统计结果送人上述数据块之后的三个单元中。用DOS功能调用显示上面两题中数据块各单元(包括统计结果)内容。为了显示清晰明了,要求每行显示 16 个数据,两个数据之间用空格分开。(教材P185第1、2、3题合到一起编一完整的程序。)
3. 编一程序,把键入的十六进制数转换成十进制数并在屏幕上显示出来。 键入的最大数为 FFFFH,若键人的不是十六进数字,则显示出错提示。(教材P188第21题。)
三、实验内容
1. 显示256个ASCII码
(1) 源程序(附注释):
data segment ;定义数据段
buf db 256 dup (?)
count equ $-buf ;将buf定义的字节长度赋值给count
data ends
code segment ;定义代码段
assume ds:data,cs:code
start: mov ax,data
mov ds,ax
mov si,offset buf ;设置数据块首地址
mov cx,count ;设定循环次数
cld ;地址修改为增量
xor ax,ax
xor dx,dx
xor bx,bx
hyone: mov [si],al ;将数据存入数据段
inc si
inc al
loop hyone
mov si,offset buf ;指向数据块首地址
mov cx,count-1
hytwo: mov dl,[si] ;显示数据段的内容
mov ah,2
int 21h
mov dl,20h ;插入空格
mov ah,2
int 21h
inc si
inc bl ;设定为换行指示标志
cmp bl,10h ;当显示了16个字符之后就换行
jz hythree
loop hytwo
;回车换行
hythree: mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
xor bl,bl ;将换行指示标志重新置为0
cmp cx,0 ;判断是否显示完
jnz hytwo ;没有显示完的话继续显示
jz hyfour ;显示完结束程序
hyfour: mov ah,4ch ;终止程序
int 21h
code ends
end start
(2)程序流程图:
图1
2. 写入数据,统计各类元素个数
(1) 源程序(附注释):
data segment ;定义数据段
org 100h ;设定初始偏移量为100h
buf db 259 dup(?) ;定义259个数据存放地址
count equ $-buf ;将buf定义的字节长度赋值给count
hy db 0 ;定义变量hy作为空格显示控制标志
data ends
code segment ;定义代码段
assume cs:code,ds:data
start: mov ax,data
mov ds,
原创力文档


文档评论(0)