这三道题的套路基本一样,思路很明确。所以注释就没写那么详细
(1)
assume cs:code
data segment
db "welcome to masm!",0
data ends
code segment
start:
;安装程序
mov ax,cs
mov ds,ax
mov si,offset begin
mov ax,0
mov es,ax
mov di,200h
mov cx,offset over - offset begin
cld
rep movsb
;修改中断向量表
mov ax,0
mov ds,ax
mov bx,7ch*4
mov ax,200h
mov [bx],ax
mov ax,0
mov [bx+2],ax
;测试程序
mov dh,10
mov dl,10
mov cl,2
mov ax,data
mov ds,ax
mov si,0
int 7ch
;暂停
mov ah,1
int 21h
;退出
mov ax,4c00h
int 21h
begin:
;保护现场
push es
push ax
push di
mov ax,0b800h
mov es,ax
;计算位置
mov al,160
mul dh
shl dl,1
mov dh,0
add ax,dx
mov di,ax ;di指向显示位置
;开始显示
s:
mov al,[si]
cmp al,0
je s0
mov es:[di],al
mov es:[di+1],cl
inc si
add di,2
jmp s
s0:
;恢复现场,返回
pop di
pop ax
pop es
iret
over: nop
code ends
end start
(2)
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset begin
mov ax,0
mov es,ax
mov di,200h
mov cx,offset over - offset begin
cld
rep movsb
;修改向量表
mov ax,0
mov ds,ax
mov bx,7ch*4
mov ax,200h
mov [bx],ax
mov ax,0
mov [bx+2],ax
;测试程序
mov ax,0b800h
mov es,ax
mov di,160*12
mov bx,offset s - offset se
mov cx,80
s:
mov byte ptr es:[di],'!'
mov byte ptr es:[di+1],2
add di,2
int 7ch
se: nop
;暂停
mov ah,1
int 21h
;退出
mov ax,4c00h
int 21h
;中断处理程序
begin:
push bp
mov bp,sp
dec cx
jcxz return
add [bp+2],bx
return:
pop bp
iret
over: nop
code ends
end start
(3)
comment ;
在开始的4行制作了一个表格,好比图书馆的书架
用s列和row列做了一个查询表,还比图书管理员手里的书单,记录每一本书的位置
;
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Neber let it rest,','$'
s3: db 'Till good is better','$'
s4: db 'And better,best.','$'
s: dw offset s1,offset s2,offset s3,offset s4
row: db 2,4,6,8
start:
mov ax,cs
mov ds,ax
mov bx,offset s
mov si,offset row
mov cx,4
ok:
;设置光标
mov bh,0
mov dh,[si]
mov dl,0
mov ah,2
int 10h
;显示字符
mov dx,[bx]
mov ah,9
int 21h
inc si
add bx,2
loop ok
;暂停
mov ah,1
int 21h
;退出
mov ax,4c00h
int 21h
code ends
end start
- [cutebe] 相当牛,这个苦思冥想也值了。^_^ 11/30 00:00
- [parse] 如果忽略消息循环,那么操作系统加载的程序很快就执行完了,就像DOS程序一闪而过,所以CPU会空闲下来 06/30 09:04
- [游客] 楼主好厉害,挺一下! 01/19 08:43
- [游客] 很不错。 01/04 18:36
- [chinatree] 潜力贴留名,沙发。 11/08 12:58
- [youthangel] 恩,这次对了 10/30 18:56
- [fpamc] mov bx,18 在这条指令的上边是不是要加一条sub dx,dx? 10/30 10:03
- [fpamc] 对的 10/27 11:19
- [fpamc] 对的 10/27 09:00
- [fpamc] 哦,对不起,看错了。实验13也有一个7ch中断 10/27 08:52
- [游客] 现在急需一个汇编大作业。。。。。。可以么。。。。。如果今天之内看见留言 就加 1765496715 12/28 16:52
- [youthangel] 这算是对我学习的鼓励吗?谢谢!咱们这样交流就可以了 10/11 15:48
- [fpamc] 多日观察,你的学习积极性挺高的。可以来我们群了。群号:75916434 10/11 10:58