(1)编写并安装int 7CH中断例程,功能为显示一个用0结束的字符串
实际运行
实验13 (1)编写并安装int 7CH中断例程,功能为显示一个用0结束的字符串.png
完整源码
assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start: mov dh,10
mov dl,10
mov cl,2
mov ax,data
mov ds,ax
mov si,0
int 7CH
mov ax,4c00H
int 21H
code ends
end start
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si, offset q1
mov ax,0
mov es,ax
mov di,200H
mov cx,offset q1end - offset q1
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7CH*4],200H
mov word ptr es:[7CH*4+2],0
mov ax,4c00H
int 21H
q1: mov ax,0B800H
mov es,ax
mov al,160
mul dh
mov di,ax
mov al,2
mul dl
add di,ax
mov al,cl
s: mov cl,[si]
mov ch,0
jcxz q1ret
mov es:[di],cl
mov es:[di+1],al
inc si
add di,2
jmp short s
q1ret: iret
q1end: nop
code ends
end start
(2)编写并安装int 7CH中断例程,功能为完成loop指令的功能
(2)编写并安装int 7CH中断例程,功能为完成loop指令的功能
- 代码以及思路见 https://www.jianshu.com/p/6b00375b3046
(3)分别在屏幕的第2 4 6 8 行显示4句英文诗
实际运行
实验13 (3)分别在屏幕的第2 4 6 8 行显示4句英文诗.png
完整源码
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Never 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
add bx,2
inc si
loop ok
mov ax,4c00H
int 21H
code ends
end start
- 使用 DOS int 21H 中断例程 ah=9号子程序,功能为在光标位置显示字符串 参考见 https://www.jianshu.com/p/b0b649c207dd
编程思想
s: dw offset s1,offset s2,offset s3,offset s4
row: db 2,4,6,8
偏移量也是数据
mov si,offset row
[si]
inc si
依次取出的是 2 4 6 8
int 21H 要求 DS:DX 指向字符串的首地址
mov bx,offset s
[bx]
add bx,2
不断指向新的字符串首地址