汇编语言输出换行_汇编语言实验(一)——打印ASCII表

这篇博客介绍了如何使用汇编语言按15行16列的格式显示ASCII码10H到100H的字符,并详细解释了代码实现过程,包括如何利用双重循环控制字符排列和换行,以及在输出换行和空格时保存DX寄存器的值。
摘要由CSDN通过智能技术生成

目录:

空山新雨后:汇编语言学习笔记(目录)​zhuanlan.zhihu.com
11cc262225d3a8ad3b4397dc45bdd99a.png

题目:

1、按15行×16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序将ASCII码递增的顺序依次显示对应的字符。

2、每16个字符为一行,字符之间以空白符隔开。


代码:

datas segment
	newline db 0ah, 0dh, '$'
	space   db ' ', '$'
datas ends

stacks segment
	       db 128 dup(?)
stacks ends

codes segment
	      assume cs:codes,ds:datas,ss:stacks
	start:
	      mov    ax, datas
	      mov    ds, ax
	      xor    dx, dx                     	;清空dx寄存器
	      mov    dl, 10h
	loop1:
	      mov    cx, 10h
	loop2:
	      mov    ah, 02h
	      int    21h
	      inc    dx

	      push   dx
	      mov    dx, offset space
	      mov    ah, 09h
	      int    21h
	      pop    dx
	      loop   loop2

	      push   dx
	      mov    dx, offset newLine
	      mov    ah, 09h
	      int    21h
	      pop    dx
	      cmp    dx, 0ffh
	      jbe    loop1

	      mov    ah, 02h
	      int    21h
	      inc    dl
   
	      mov    ax, 4c00h
	      int    21h
codes ends
   end start

因为要切换行,所以用了双重循环,内循环16次一个循环,因为正好从10h到100h是90h个字符是16的倍数,所以无需再内层循环做额外的判断。

最后就是输出换行和空白字符的时候,保存了一下dx的值,因为输出字符串的时候需要用到dx来作为寄存器。


运行效果图:

ee84b8b4f43d8ccabd7df3b02516641b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值