【问题标题】:draw an inclined line in assembly在装配中画一条斜线
【发布时间】:2014-12-09 15:12:06
【问题描述】:

我需要使用模拟器 8086 在程序集中绘制一条斜线,其中行值存储在 dx 中,列存储在 cx 中,所以我将两者的初始值与最终值进行比较,但它不起作用当它仅达到列最终值或行而不是两者都需要时,正确地停止 这是应该画线的代码部分

u4: mov ah, 0ch ; put pixel
    int 10h

 cmp dx,50
 dec dx
 dec cx
 cmp cx,[1000h]
 ja u4

【问题讨论】:

  • 从不使用第一个cmp 的结果。你也需要有条件跳转。
  • 我不知道你是否被限制使用int 10h,而不是说,模式13h,但是对于像Bresenham + BIOS这样的关键字有很多代码。
  • 当我在第一个 cmp 之后再次跳转时,它刚刚到达最后一行而忽略了第二个 cmp,我无法弄清楚如何解决这个问题
  • •在 AL 中指定颜色属性(例如,1 表示蓝色)•确保使用视频模式。使用命令 "mov ah, 0" "mov al, (videomode)" "int 10h" 将您的计算机设置为视频模式(例如模式 19 是 320x200 和 256 色)
  • @vanUitkon 我在主代码中使用了所有这些 - 它绘制了一个梯形 - 这只是负责斜线的一小部分。

标签: assembly emulation x86-16


【解决方案1】:
 mov cx, 204  ; column
    mov dx, 1     ; row
    mov al, 15     ; white
u1: mov ah, 0ch    ; put pixel
    int 10h

    dec cx
    cmp cx, 1
    jae u1

试试这个,它应该显示一个上线。祝你好运

【讨论】:

    【解决方案2】:
        mov cx, 204  ; column
        mov dx, 1     ; row
        mov al, 15     ; white
    u1: mov ah, 0ch     ; put pixel
    
    int 10h
    
        dec cx
        cmp cx, 1
        jae u1
    

    这应该从 mov cx 复制到 jae u1 希望它会有所帮助

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 2020-03-12
      相关资源
      最近更新 更多