王爽汇编第12章实验题!
assumecs:codecodesegmentstart:movax,csmovds,axmovsi,offsetdo0;设置ds:si指向源地址movax,0move...
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0 ;设置ds:si指向源地址
mov ax,0
mov es,ax
mov di,200h ;设置es:di指向目标地址
mov cx,offset do0end-offset do0 ;设置cx为传输长度
cld ;设置传输方向为正
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0 ;设置中断向量表
mov ax,4c00h
int 21h
do0: jmp short do0start
db 'divide error!'
do0start:mov ax,cs
mov ds,ax
mov si,202h ;设置ds:si指向字符串
mov ax,0b800h
mov es,ax
mov di,12*160+34*2 ;设置es:di指向显存空间的中间位置
mov cx,13 ;设置cx为字符串长度
s: mov al,[si]
mov es:[di],al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end: nop
code ends
end start
其中start: mov ax,cs和do0start:mov ax,cs中的cs有什么不同,do0start:mov ax,cs中的cs具体指什么??? 展开
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0 ;设置ds:si指向源地址
mov ax,0
mov es,ax
mov di,200h ;设置es:di指向目标地址
mov cx,offset do0end-offset do0 ;设置cx为传输长度
cld ;设置传输方向为正
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0 ;设置中断向量表
mov ax,4c00h
int 21h
do0: jmp short do0start
db 'divide error!'
do0start:mov ax,cs
mov ds,ax
mov si,202h ;设置ds:si指向字符串
mov ax,0b800h
mov es,ax
mov di,12*160+34*2 ;设置es:di指向显存空间的中间位置
mov cx,13 ;设置cx为字符串长度
s: mov al,[si]
mov es:[di],al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end: nop
code ends
end start
其中start: mov ax,cs和do0start:mov ax,cs中的cs有什么不同,do0start:mov ax,cs中的cs具体指什么??? 展开
1个回答
展开全部
这里是有点难理解!
start:这里的CS是指的是当前的程序的代码段
而后面的mov ax,cs是直接被翻译成了机器码,并将它复制到了中断子程序中,这段代码暂时是不执行的
当有其他某个程序运行的时候出现了该中断它才会被执行,并且这个时候cs就是
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0 ;设置中断向量表
这里设置的中断向量表中的cs应该是0
====================
这是我的想法,
start:这里的CS是指的是当前的程序的代码段
而后面的mov ax,cs是直接被翻译成了机器码,并将它复制到了中断子程序中,这段代码暂时是不执行的
当有其他某个程序运行的时候出现了该中断它才会被执行,并且这个时候cs就是
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0 ;设置中断向量表
这里设置的中断向量表中的cs应该是0
====================
这是我的想法,
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询