用8086汇编语言在显示屏中央开一个大小可以调整的窗口(行列的象素数,可由用户输入两个数字调整)并在窗口中显示hexinbo
时间: 2024-02-12 22:07:39 浏览: 24
好的,以下是使用8086汇编语言在显示屏中央开一个大小可以调整的窗口,并在窗口中显示"hexinbo"的代码:
```assembly
.model small
.stack 100h
.data
; 定义窗口大小变量
row dw ?
col dw ?
; 定义消息变量
msg db 'hexinbo$'
; 定义窗口的左上角坐标
x dw ?
y dw ?
.code
mov ax, @data
mov ds, ax
; 获取用户输入的窗口大小
mov ah, 0Ah
lea dx, row
int 21h
lea dx, col
int 21h
; 计算窗口左上角坐标
mov ax, 320 ; 显示屏宽度
sub ax, col ; 减去窗口宽度
shr ax, 1 ; 右移一位,相当于除以2
mov x, ax
mov ax, 200 ; 显示屏高度
sub ax, row ; 减去窗口高度
shr ax, 1 ; 右移一位,相当于除以2
mov y, ax
; 设置显存指针
mov ax, 0A000h
mov es, ax
; 在窗口区域填充灰色背景
mov cx, row
mov bx, col
mov al, 8 ; 灰色
mov si, x
mov di, y
mov ah, 0Ch
fill_loop:
push cx
rep stosb
pop cx
add di, 320 ; 下一行
dec cx
jnz fill_loop
; 在窗口中心显示文本
mov ah, 13h
lea bp, msg
mov bl, 1 ; 白色
mov cx, 8 ; 字符串长度
mov dx, y
add dx, (row - 8) / 2 ; 垂直居中
mov si, x
add si, (col - 8) / 2 ; 水平居中
int 10h
; 等待用户按任意键退出
mov ah, 0
int 16h
; 退出程序
mov ah, 4Ch
int 21h
end
```
这个程序使用了BIOS中断来获取用户输入、设置显存指针、在屏幕上显示文本等操作。具体来说,它的流程如下:
1. 定义窗口大小变量和消息变量。
2. 获取用户输入的窗口大小。
3. 计算窗口左上角坐标。
4. 设置显存指针。
5. 在窗口区域填充灰色背景。
6. 在窗口中心显示文本。
7. 等待用户按任意键退出。
8. 退出程序。
您可以通过修改程序中的`row`和`col`变量来调整窗口大小,例如将它们分别设置为20和30,可以得到一个20行30列的窗口。