汇编语言源程序绘制矩形
时间: 2023-07-11 19:34:59 浏览: 105
下面是一个简单的汇编语言源程序,用于在屏幕上绘制一个矩形。
```
.model small
.stack 100h
.data
; 定义屏幕的宽度和高度
width db 80
height db 25
.code
main proc
; 设置视频模式为 80x25 文本模式
mov ah, 0
mov al, 3
int 10h
; 定义矩形的起始坐标和大小
mov dl, 10 ; 左上角 x 坐标
mov dh, 5 ; 左上角 y 坐标
mov cl, 20 ; 矩形宽度
mov ch, 10 ; 矩形高度
; 绘制矩形
call drawRect
; 等待用户按下任意键
mov ah, 0
int 16h
; 恢复视频模式为 80x25 文本模式
mov ah, 0
mov al, 2
int 10h
; 退出程序
mov ah, 4ch
int 21h
main endp
; 绘制矩形的子程序
drawRect proc
push ax
push bx
push cx
push dx
; 计算矩形的右下角坐标
mov bl, dl
add bl, cl
mov bh, dh
add bh, ch
; 绘制矩形的上边框
drawLine:
mov ah, 2
mov bh, 0
mov dh, dh
int 10h
inc dl
cmp dl, bl
jle drawLine
; 绘制矩形的左边框
mov dl, dl
mov dh, dh
drawLeft:
mov ah, 2
mov bh, 0
int 10h
inc dh
cmp dh, bh
jle drawLeft
; 绘制矩形的下边框
mov dl, bl
mov dh, bh
drawBottom:
mov ah, 2
mov bh, 0
int 10h
dec dl
cmp dl, dl
jge drawBottom
; 绘制矩形的右边框
mov dl, bl
mov dh, dh
drawRight:
mov ah, 2
mov bh, 0
int 10h
dec dh
cmp dh, dh
jge drawRight
pop dx
pop cx
pop bx
pop ax
ret
drawRect endp
end main
```
该程序使用 BIOS 中断来设置视频模式和绘制图形。在 `main` 子程序中,我们首先设置屏幕模式为 80x25 文本模式,然后调用 `drawRect` 子程序来绘制一个矩形。最后,我们等待用户按下任意键,然后恢复屏幕模式为文本模式并退出程序。
在 `drawRect` 子程序中,我们首先计算矩形的右下角坐标,然后分别绘制上、左、下和右边框。每个边框都是通过调用 `int 10h` 中断来绘制的,该中断将坐标和颜色值作为参数传递。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)