第一部分:显示字符串
DATAS SEGMENT
;此处输入数据段代码
db 'Welcome to masm!',0
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
dw 16 dup (0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov ax,STACKS
mov ss,ax
;此处输入代码段代码
mov dh,8 ;第8行
mov dl,3 ;第3列
mov cl,2 ;绿色
mov si,0
call Show_str
;
MOV AH,4CH
INT 21H
;显示字串子程序
Show_str:
;入栈
push es
push ax
push bx
push di
push cx
;显存地址
mov ax,0B800H
mov es,ax
mov di,0 ;行列偏移地址
;
mov ax,0a0h ;行偏量
dec dh ;行减1
mul dh ;计算行偏移
mov di,ax ;将行偏移保存在di中
;
mov ax,2h
dec dl ;列减1
mul dl ;计算列偏移
add ax,di
mov di,ax
;
mov bh,cl ;属性
;
showOne:
mov bl,ds:[si] ;取一个字母
mov cl,bl ;判断是否为0
mov ch,0
jcxz OK
;mov es:[di+ax],bx ;显示到屏幕上
mov es:[di],bx
inc si ;到下一个字母位置
add di,2 ;列移2个位置到下一列
jmp showOne ;循环
OK:
;出栈
pop cx
pop di
pop bx
pop ax
pop es
;返回
ret ;显示字串子程序show_str结束
;
CODES ENDS
END START
- [sbjcm33] 原来你是把实验1和2放一起的,好办法,我怎么没想到呢,把它们分成了两个程序。 具体的内容我就不看了 12/06 01:34
- [rotapple] 却没有放入段地址,而此处要明确的是:seg code 的含义是指段地址 ============= 06/23 16:56
- [Wednesday] 分析透彻,收藏!哈哈 11/09 17:26
- [Wednesday] 公布答案了,哈哈。 11/05 23:03
- [mqmelon] 不用客气,共同进步! 11/02 10:03
- [feemess] 谢谢指点.我的下一次答题要在32个小时之后了.一直都认为第一题没错.看来.要认真看书才是 10/28 00:08
- [mqmelon] 谢谢,我会努力去做. 10/27 23:18
- [游客] mqmelon同学,你能有这样的认识首先说明你的学习态度是对的,只要有正确的学习态度,就能够学好,以 10/25 11:56
- [sunshine] 呵呵 10/25 09:49
- [mqmelon] 谢谢,十分谢谢。 10/24 17:10