TASM汇编中如何设置图案的光标位置与显示颜色
DOS汇编红色平行四边形绘制问题
开发基础信息
- 实现目标:在汇编程序中完成光标位置设置、颜色配置逻辑,输出作为Logo组成部分的红色平行四边形图案
- 工具环境:DOSBox模拟器,搭配TASM/TLINK工具链完成汇编、链接流程
问题描述
- 前期实现时仅在图案绘制起始段添加颜色设置代码,执行
mov ch,100h指令后出现多余字符输出,平行四边形形状被破坏 - 初步判断问题根源为CH寄存器冲突:平行四边形自身的绘制循环逻辑已经占用了CH寄存器,直接写入颜色配置值会破坏原有计数逻辑
- 初步设想的修复方向:改为逐字符打印图案时同步设置光标位置与颜色属性,同步更新颜色寄存器;由于绘制逻辑占用了部分通用寄存器,考虑将需要复用的寄存器值暂存到内存变量中
- 当前采用过程化方式编码,对BIOS/DOS屏幕中断的开发逻辑尚不熟悉,现有代码片段如下:
; ============================ LPARALLEL PROC ; CLEAR ALL REGISTERS xor cx,cx xor bx,bx xor ax,ax mov ah,02h mov bh,00h mov dh,9 mov dl,41 int 10h mov ah,09h mov cx,10 mov bl,74H mov dx,30h int 10h sub INPUTPL,30h mov cl,INPUTPL mov bh,INPUTPL mov bl,0 mov DIA,bh mov LBLANK,bl LP_SPACES: cmp LBLANK,0 JE PRINT_CHL mov ah,02h mov dl,20h int 21h dec LBLANK JMP LP_SPACES PRINT_CHL: mov ah,02h mov dl,04h int 21h mov ah,02h mov dl,20h int 21h dec DIA cmp DIA,0 JNE PRINT_CHL lea dx,LINE mov ah,09h int 21h inc bh mov DIA,bh dec DIA dec bh inc bl mov LBLANK,bl loop LP_SPACES RET LPARALLEL ENDP ; ============================
内容的提问来源于stack exchange,提问作者Serena
相关产品推荐
相关产品推荐

