- [qiangzi] 楼主有空的话能帮我装一下dos吗?我一直装不上,qq519710391,先谢谢! 02/06 20:34
- [zwz_good] 看到自己的注释能给别人带来帮助,心里非常高兴,也许这就是帮助别人的快乐吧。 10/20 16:23
- [游客] 程序测试了一下,没什么问题。 10/20 14:25
- [游客] 博主程序中的那部分注释说明非常重要,非常有用,非常有帮助。好啊。 10/20 14:15
- [zwz_good] 谢谢你的鼓励。 10/10 20:56
- [游客] 自己实现更能体会过程,有好处,做完了再做便捷的就知道便捷在哪了。 顶博主! 10/10 14:25
- [zwz_good] 噢,习惯了使用这个子程序了,再来一个使用INT 21H中断的,谢谢提醒。 10/09 20:25
- [tinyparticle] ;名称:show_str 显示字符串子程序 ;功能:在指定的位置,用指定的颜色,显示一个用0 10/09 20:17
- [tinyparticle] 同意楼上 10/08 22:56
- [20081148] 你的7ch中断例程有问题,题目要求实现无条件段内近转移 jmp near ptr s指令,可你的代码 10/08 22:24
- [20081148] 你的虚拟机从哪下的啊?我下了好几个,都不能用,无语了。 10/21 08:53
[2009-10-13 21:31] 16.3直接定址表 例题计算sin(x),并在屏幕中间显示计算结果
assume cs:code, ds:data
data segment
dw 0, 30, 60, 90, 120, 150, 180, 270
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0
mov cx, 8
s:
mov ax, [si]
call showsin
call delay
add si, 2
loop s
mov ax, 4c00h
int 21h
delay:
push ax
push dx
mov ax, 0h
mov dx, 0h
delay0:
sub ax, 1
sbb dx, 0
cmp ax, 0
jne delay0
cmp dx, 0
jne delay0
pop dx
pop ax
ret
;用ax传递角度
showsin:
jmp short show
table dw ag0, ag30, ag60, ag90, ag120, ag150, ag180, agError ;字符串偏移地址表
ag0 db '0', 0
ag30 db '0.5', 0
ag60 db '0.866', 0
ag90 db '1', 0
ag120 db '0.866', 0
ag150 db '0.5', 0
ag180 db '0', 0
agError db 'angle error!', 0 ;此处添加了错误处理
show:
push bx
push es
push si
push cx
mov bx, 0b800h
mov es, bx
mov bl, 30
div bl
mov ah, 0
mov bx, ax
add bx, bx
cmp bx, 12
jna show0
mov bx, 14
show0:
mov bx, table[bx]
;清屏
mov cx, 8
mov si, 160*12+40*2
show1:
mov word ptr es:[si], 0
add si, 2
loop show1
mov si, 160*12+40*2
shows:
mov ah, cs:[bx]
cmp ah, 0
je showret
mov es:[si], ah
mov es:[si+1], bl
inc bx
add si, 2
jmp short shows
showret:
pop cx
pop si
pop es
pop bx
ret
code ends
end start
data segment
dw 0, 30, 60, 90, 120, 150, 180, 270
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, 0
mov cx, 8
s:
mov ax, [si]
call showsin
call delay
add si, 2
loop s
mov ax, 4c00h
int 21h
delay:
push ax
push dx
mov ax, 0h
mov dx, 0h
delay0:
sub ax, 1
sbb dx, 0
cmp ax, 0
jne delay0
cmp dx, 0
jne delay0
pop dx
pop ax
ret
;用ax传递角度
showsin:
jmp short show
table dw ag0, ag30, ag60, ag90, ag120, ag150, ag180, agError ;字符串偏移地址表
ag0 db '0', 0
ag30 db '0.5', 0
ag60 db '0.866', 0
ag90 db '1', 0
ag120 db '0.866', 0
ag150 db '0.5', 0
ag180 db '0', 0
agError db 'angle error!', 0 ;此处添加了错误处理
show:
push bx
push es
push si
push cx
mov bx, 0b800h
mov es, bx
mov bl, 30
div bl
mov ah, 0
mov bx, ax
add bx, bx
cmp bx, 12
jna show0
mov bx, 14
show0:
mov bx, table[bx]
;清屏
mov cx, 8
mov si, 160*12+40*2
show1:
mov word ptr es:[si], 0
add si, 2
loop show1
mov si, 160*12+40*2
shows:
mov ah, cs:[bx]
cmp ah, 0
je showret
mov es:[si], ah
mov es:[si+1], bl
inc bx
add si, 2
jmp short shows
showret:
pop cx
pop si
pop es
pop bx
ret
code ends
end start
评论次数(0) |
浏览次数(469) |
类型(汇编作业) |
收藏此文 |