assume cs:code
data segment
db 'welcome to masm!',0
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
mov ax,stack
mov ss,ax
mov sp,16 ;寄存器初始化
call show_str ;转移指令到show_str
mov ax,4c00h
int 21h
show_str:push dx
push si
push bp
push ax
push cx ;保存寄存器中的数据
mov al,160
mul dh
mov bp,ax
mov al,2
mul dl
add bp,ax ;计算显存初地址
mov ax,0b800h
mov es,ax ;将段地址放入寄存器es中
zhuanyi:mov cl,ds:[si]
mov ch,0
jcxz ok ;判断字符是否为0
mov es:[bp],cl ;将字符串转移到显存中
pop cx
mov es:[bp+1],cl ;定义颜色
push cx
add bp,2
inc si
jmp short zhuanyi
ok:pop cx
pop ax
pop bp
pop si
pop dx ;恢复寄存器中数据
ret
code ends
end start
- [12sunfeng34] 哦 对 08/24 19:34
- [12sunfeng34] 对 (2)中的sp应该是0 谢谢 08/24 07:14
- [mess] 第一题注意段地址是1,即偏移地址为0时(取偏移地址最小值),物理地址=1*10h+0=10H 08/23 15:20
- [mess] sp都设置等于16,有问题。 08/23 15:19
- [mess] 把第一个答案转换成十六进制的。 学完第二章的实验,会了debug,可以用a命令写入指令,然后t 08/23 15:18
- [mywiil] 注意借鉴后的吸收哟。 08/21 03:29
- [12sunfeng34] 对应该是 我算错了 08/19 18:54
- [12sunfeng34] 谢谢 08/19 18:52
- [whfeiya] 这个好像不对吧,应该倒数第四个是D882,D888,D810 08/18 12:49
- [beichenyibei] 您好!我之前写错了,像“指令 寄存器,寄存器”这种形势的指令,每次读取后ip+2不是+3,。 像“ 08/17 10:05