汇编语言实验九完整代码

汇编语言实验九完整代码


建议先自己思考问题的答案,不懂则返回看书

显示绿色、红底绿色、白底蓝色的welcome to masm!
解析: 在显存中,一个dw 表示一个字符,dw的高字节表示颜色,低字节表示字符的ASCII。
eg. AH=0000 0010 AL= ‘a’,则在屏幕上显示为绿色的’a’ ,因为AH=02h,表示颜色是绿色,所以只是对颜色数据进行改动

assume cs:code
data segment
 db 'welcome to masm!'
 db 2,36,113		;颜色
data ends

code segment
start:
	mov ax,data
	mov ds,ax
	mov bx,0
	mov di,16

	mov ax,0b800h
	mov es,ax
	mov si,160*12+35*2

	mov cx,3
s:
	mov ah,ds:[di]
	push cx
	mov cx,16
s1:
	mov al,ds:[bx]
	mov es:[si],ax
	add si,2
	inc bx
	loop s1
	
	pop cx
	add si,128
	inc di
	mov bx,0
	loop s

mov ax,4c00h
int 21h

code ends
end start

运行结果截图:
在这里插入图片描述

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的汇编语言程序,实现了将一个字节的数转化为两个十六进制的ASCII码的功能。请注意,这只是一个示例代码,您需要根据实验要求和自己的理解进行修改和完善。另外,由于不同的汇编语言编译器可能存在差异,以下代码可能不适用于所有的编译器,您需要根据自己使用的编译器进行相应的修改。 ``` ; 实验九:调用子程序的实现 ; 将一个字节的数转化为两个十六进制的ASCII码 .model small .stack 100h .data msg db "请输入一个字节的数:$" res db "结果为:$" num db ? hex1 db ? hex2 db ? .code main proc mov ax, @data mov ds, ax ; 输出提示信息 mov ah, 09h lea dx, msg int 21h ; 输入一个字节的数 mov ah, 01h int 21h mov num, al ; 调用子程序,将num转化为两个十六进制的ASCII码 push ax call convert add sp, 2 ; 输出结果 mov ah, 09h lea dx, res int 21h mov ah, 02h mov dl, hex1 int 21h mov dl, hex2 int 21h ; 程序结束 mov ah, 4ch int 21h main endp ; 子程序:将一个字节的数转化为两个十六进制的ASCII码 convert proc ; 将高四位转化为ASCII码 mov ah, num shr ah, 4 cmp ah, 0ah jl skip1 add ah, 37h jmp next1 skip1: add ah, 30h next1: mov hex1, ah ; 将低四位转化为ASCII码 mov ah, num and ah, 0fh cmp ah, 0ah jl skip2 add ah, 37h jmp next2 skip2: add ah, 30h next2: mov hex2, ah ; 子程序结束,返回主程序 ret convert endp end main ``` 希望这个示例代码可以对您有所帮助。如果您还有其他问题或需要进一步的帮助,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值