实验三

本文探讨了汇编语言中字符输出的原理,通过具体示例解释了ASCII码的应用和字符颜色控制的方法。深入分析了寄存器操作与屏幕显示的关系,为初学者提供了实践指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习一:

   t1.asm具体内容:

assume cs:code
code segment
	mov ah,2
	mov dl,3
	add dl,30h
	int 21h
	mov ah,2
	mov dl,6
	add dl,30h
	int 21h
	mov ah,4ch
	int 21h
code ends
end

  运行效果:

  

  将mov dl,3改为mov dl,4       mov dl,6改为mov dl,9

  运行结果变为49;

  debug调试t1.exe:

  

  cx的值是0016,寄存器ds和寄存器cs满足(cs)=(ds)+10h

  PSP的头两个字节是CD 20;

  

  u命令对t1.exe反汇编;

  

  单步执行:

  

  

  

  后查询后知  mov ah,2 ,int 21h 输出的是ascii码,为了输出想要的数字,所以dl加30h。

练习二:

  t2.asm源码:

assume cs:code
code segment
	mov ax,0b800h
	mov ds,ax
	mov bx,0
	mov [bx],0133h
	add bx,2
	mov [bx],0136h
	mov ax,4c00h
	int 21h
code ends
end

  运行结果:

  

  (1)左上角果真出现数字红色36

  (2)左上角数字变为红色29

  (3)左上角数字变为浅蓝色36

  

延伸思考

  要输出的字符与寄存器中的字符相差30h,输出字符可以通过寄存器,也可以通过段地址。

  现在大体可以猜到,输出的字符颜色与高字节有关。但是至于为什么,有什么样的关系还不知道,对于汇编如何输入字符到屏幕上还是不清楚。

 

转载于:https://www.cnblogs.com/AHrui/p/9959396.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值