关于汇编语言的问题
题目是 编写并安装int 7ch 中断例程 功能为显示一个yong0结束的 字符串,中断例程安装在0:200初
以下是我编的两个 程序 可是 运行之后 总是出现 cup 遇到无效指令 请大家给解决一下啊 谢谢了
第一个程序
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset s1
mov ax,0
mov es,ax
mov di,200h
mov cx,offset s2-offset s1
cld
rep movsb
mov di,7ch*4
mov word ptr es:[di],200h
inc di
inc di
mov word ptr es:[di],0
mov ax,4c00h
int 21h
s1:mov ax,0b800h
mov es,ax
mov bl,cl
sub dh,1
sub dl,1
mov al,160
mul dh
add dl,dl
mov dh,0
add ax,dx
mov di,ax
s4:mov al,[si]
mov ch,0
mov cl,al
jcxz s3
mov es:[di],al
inc di
mov es:[di],bl
inc di
inc si
jmp s4
s3:iret
s2:nop
code ends
end start
第二个程序
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!',0
data ends
stack segment
dw 100 dup(0)
stack ends
code segment
start:mov ax,stack
mov ss,ax
mov sp,2*100
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
追问:可以具体点吗 我初学汇编
答案:;--------------------------------- DATA SEGMENT MESG DB 13, 10, 'I love yong0 ! ', 10, 13, '$' DATA ENDS ;--------------------------------- CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX ;---------------------------- PUSH DS MOV DX, OFFSET DISP_7C ;取中断服务程序的偏移地址. MOV AX, SEG DISP_7C ;取中断服务程序的段地址. MOV DS, AX MOV AH, 25H ;写中断向量. MOV AL, 7CH INT 21H ;写入. POP DS ;---------------------------- INT 7CH ;执行该中断程序. ;---------------------------- MOV AH, 4CH INT 21H ;---------------------------- DISP_7C PROC FAR ;中断服务程序DISP_7C MOV DX, OFFSET MESG MOV AH, 09H INT 21H IRET DISP_7C ENDP ;---------------------------- CODE ENDS END START ;---------------------------------蓝屏
其他:安装中断需要在实DOS模式
上一个:精通汇编语言有用吗
下一个:汇编语言TEST