请教王爽汇编实验10

王爽汇编语言实验10,在屏幕的8行3列,用绿色显示data段中的字符串。这样做对吗:assumecs:code,ds:datadatasegmentdb'Welcomet... 王爽汇编语言实验10,在屏幕的8行3列,用绿色显示data段中的字符串。这样做对吗:
assume cs:code,ds:data
data segment
db 'Welcome to masm!',0 ;要写入显存缓冲区的字符
data ends
code segment
start: mov dh,8
mov dl,3
mov cl,2 ;给出行,列和属性的参数

mov ax,data
mov ds,ax
mov si,0 ;ds:si指向字符串首地址

call show_str

mov ax,4C00H
int 21H

show_str: push es
push di
push dx
push bx
push cx ;相关寄存器入栈

mov ax,8b00h
mov es,ax ;es指向显存缓冲区首地址8b00h

mov di,0
call diget ;调用diget,算出di,由es:di指向es:di指向写入字符的地址

mov bl,cl ;保存属性参数

s: mov ch,0
mov cl,[si]
jcxz ok ;cx≠0就写入字符,cx=0就执行ok结束调用

mov es:di,[si]
mov es:1[di],bl ;写入字符和属性
add si,1
add di,2
jmp s ;循环s直到0

diget: push dx ;问题主要在这里,要写入显存缓冲区第8行3列
;我觉得对应的偏移地址应该是464H。
;应该用7(行数)×160(每行160个字符)
;加上2(列数)×2(每列2字符)。
;算出后再用di指向。
;但是网上很多答案都是用行和列直接寻址,我觉得不对
sub dh,1
mov ah,dh
mov al,160
mul al
mov di,ax
sub dl,1
mov ah,dl
mov al,2
mul al
add di,ax

pop dx
ret

ok:pop es
pop di
pop dx
pop bx
pop cx
ret ;退出show_str
分不多了,谢谢。
展开
 我来答
ch314156
2010-10-24 · TA获得超过4378个赞
知道小有建树答主
回答量:2036
采纳率:100%
帮助的人:1089万
展开全部
测试一下,有问题吗,问题在哪? 我在我的百度空间里写了王爽汇编的全部答案,全都通过测试,欢迎来看,有问题我们可以讨论讨论 http://hi.baidu.com/ch314156/home
华芯测试
2024-09-01 广告
电学测试台是深圳市华芯测试科技有限公司的核心设备之一,它集成了高精度测量仪器与自动化控制系统,专为半导体芯片、电子元件及模块的电性能检测而设计。该测试台能够迅速、准确地完成电压、电流、电阻、电容及频率等关键参数的测试,确保产品质量符合行业标... 点击进入详情页
本回答由华芯测试提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式