- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微原软件实验二:汇编语言程序设计微原软件实验二:汇编语言程序设计
一、实验目的
1、开始独立进行汇编语言程序设计;
2、掌握基本分支,循环程序设计;
3、掌握最简单的 DOS 功能调用
4、掌握最基本的代码转换方法;
5、运用子程序进行程序设计.
二、实验内容
1、实验要求
1、编写一个程序,在显示器上显示256个ASCII代码,要求显示格式为每行显示16个字符,两个ASCII字符之间空一格。
2、教材习题4.1、4.2、4.3
3、教材习题4.21
2、程序流程图
①附加题
图一:附件题(格式输出ASCII码)流程图
②习题4.1
图二:习题4.1流程图
③习题4.2
图三:习题4.2流程图
④习题4.3
图四:习题4.3流程图
⑤习题4.21
图五:习题4.21主程序子程序一流程图
图六:习题4.21子程序二子程序三
3、源程序
①附加题
data segment
count equ 256
data ends
stack segment stack stack
buf db 20 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data
mov ds,ax
xor al,al
mov cx,count
zrbh: mov bh,16
next: call disp ;输出字符
push ax ;入栈保护
push bx
call space ;输出空格
pop bx ;出栈恢复
pop ax
inc al ;自增
dec bh ;自减
jnz loop1 ;如果输出个数还不是16的倍数
push ax
push bx
call cr ;输出回车、换行
pop bx
pop ax
mov bh,16 ;重新设置bh
loop1: loop next
mov ah,4ch
int 21h
disp proc near ;显示字符子程序
mov dl,al ;在调用之前先把要显示的字符送入al
mov ah,2
int 21h
ret
disp endp
space proc near
mov dl,20h
mov ah,2
int 21h
ret
space endp
cr proc near
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
ret
cr endp
code ends
end start
②习题4.1
data segment
org 100h ;设置256个单元的起始地址偏移量为0100h
buf1 db 256 dup(?) ;buf1的偏移量为0100h
count equ $-buf1 ;得到buf1的长度
data ends
stack segment stack stack
stack ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data ;data=076Ah,数据段基址
mov ds,ax
mov si,offset buf1 ;si=0100h
mov cx,count ;循环计数
xor al,al ;al清零,初始化为00h
next: mov [si],al ;将al存储到ds*4+si=077A0h
inc al ;al加一
inc si ;si加一
loop next ;循环
mov ah,4ch ;程序结束
int 21h
code ends
end start
③习题4.2
data segment
org 100h ;设置256个单元的起始地址偏移量为0100h
buf1 db 256 dup(?) ;buf1的偏移量为0100h
count equ $-buf1 ;得到buf1的长度
data ends
stack segment stack stack
stack ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data ;data=076Ah,数据段基址
mov ds,ax
mov si,offset buf1 ;si=0100h
mov cx,count ;循环计数
xor al,al ;al清零,初始化为00h
next: mov [si],al ;将al存储到ds*4+si=077A0h
inc al ;al加一
inc si ;si加一
loop next ;循环
xor bx,bx ;bx置零,bl和bh分别存放正、负元素的个数
原创力文档


文档评论(0)