实验10 编写子程序3数值显示

编程,将data段中的数据以十进制形式显示出来

这道题目是三道题目之中最难的一道题,当然前面两道题目如果能理解了的话这道题目是不成问题的,show_str是可以复制前面的。

有点不同的是你保存字符串的数据区是6 6 6 2 1这样保存的,我们要倒过来录入。所以在录入后判断si是否为0就ok了。


assume cs:code

data segment 
	db 10 dup(0)
data ends

code segment
start:
	mov ax,12666
	mov bx,data
	mov ds,bx
	mov si,0
	call dtoc
	
	mov dh,8
	mov dl,3
	call show_str
	
	mov ax,4c00h
	int 21h
	
dtoc:
	mov ch,0
 	call set
	ret

set:
	mov bx,10
	div bx
	mov [si],dx
	add byte ptr [si],30h
	inc si
	mov cx,ax
	jcxz ok
	mov dx,0
	jmp short set
	
show_str:	;其实这是一个子程序,里面是包含s和ok的,这样理解容易些
	dec si
	mov al,160
	mul dh
	mov bx,ax
	mov al,2
	mul dl
	add bx,ax	;计算出行和列加起来的偏移量
	mov ax,0B800h
	mov es,ax	;es:[bx]为要输入的显示区
	mov al,2	;颜色数值
	
s:	;判断是否为0,否就输入到显示区
	mov cl,[si]
	mov es:[bx],cl
	mov es:[bx+1],al
	add bx,2
	mov cx,si
	jcxz ok
	dec si
	jmp short s
	
ok:	;返回
	ret
	
code ends
end start
这道题目不过多解释,如果你能搞点前面两道建议这道题目就自己敲吧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值