- [wisji8] call dword ptr ss:[0] 执行这条语句时,难道也将段地址入栈吗?应该只将I 09/21 20:46
- [mess] 这个程序不太符合题目要求,小于‘a’的字符不仅有大写字母,还有其他很多字符。 可以查看一下常用 08/16 17:34
- [mess] 前两三章都是基础知识,博主写每个题的分析的方法非常好,写出来对知识理解的也就明晰、深刻了。 基 08/16 17:27
- [mywiil] mul al 指令后的sf位其实变化不确定,因为cpu对于mul执行后sf的影响没有定义,根据我的体 05/22 13:43
- [blackberry] 没问题。 05/21 16:50
- [versaariel] 挺好的^-^ 05/11 19:49
- [versaariel] 挺好的^-^ 05/05 13:04
- [crazyhl] 多谢 01/12 20:32
- [younggay] 正确,加油。 01/12 18:47
- [游客] (1)有一个答案错误。 12/28 10:07
[2010-05-30 08:29] 实验12
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200H
mov cx,offset do0end-offset do0
cld
rep movsb
mov word ptr es:[0],200H
mov word ptr es:[2],0
mov ax,1000H
mov bh,1
div bh
mov ax,4c00H
int 21H
do0:jmp short do0start
db "divide error!"
do0start:mov ax,cs
mov ds,ax
mov si,202H
mov ax,0b800H
mov es,ax
mov di,12*160+36*2
mov cx,13
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
分析:这里面我讲0号中断设置好后,直接运算除法了,一开始写这个的时候我还纠结于单步中断的执行过程,需要怎么样的控制,怎样把tf,if设置为零,我都想到了用and的设定他们,但是后来我发现,单步中断的所有过程都是有cpu来执行的,我只需把0号中断重新改写就好了,哎!看书不自习啊
code segment
start: mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200H
mov cx,offset do0end-offset do0
cld
rep movsb
mov word ptr es:[0],200H
mov word ptr es:[2],0
mov ax,1000H
mov bh,1
div bh
mov ax,4c00H
int 21H
do0:jmp short do0start
db "divide error!"
do0start:mov ax,cs
mov ds,ax
mov si,202H
mov ax,0b800H
mov es,ax
mov di,12*160+36*2
mov cx,13
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
分析:这里面我讲0号中断设置好后,直接运算除法了,一开始写这个的时候我还纠结于单步中断的执行过程,需要怎么样的控制,怎样把tf,if设置为零,我都想到了用and的设定他们,但是后来我发现,单步中断的所有过程都是有cpu来执行的,我只需把0号中断重新改写就好了,哎!看书不自习啊
评论次数(0) |
浏览次数(561) |
类型(汇编作业) |
收藏此文 |