You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:06:25