萌新小花学编程 发表于 2022-10-12 23:11:22

实验九的作业

asume CS:dmd,ds:sjd,ss:zd es:cfdz

sjd segment
    db'welcome to masm!' ;定义要显示的字符共16个字节
        db 41h,24h,14h   ;分别为红底蓝字,绿底红字,蓝底红字的颜色码
sjd ends



zd segment
    db,0
zd ends



dmd segment

start:mov ax,sjd
      mov ds,ax   ;字符及字符颜色的数据段段地址b87c0
          mov ax,0B872H    ;第11行第一个字节的段起始地址
          mov es,ax   ;es为存放地址的起始段地址
          mov bx,0    ;存放字符地址偏移量
          mov dx,0    ;调取字符代码的偏移量
          mov si,0    ;调取颜色代码的地址偏移量
          mov di,0    ;存放字符地址的行偏移量
          mov ax,0
      mov cx,3
          
   s0:push cx
          mov cx,16
   s1:mov al,ds:0
          mov es:,al
          mov al,ds:16
          mov es:,al
          inc dx
          add bx,2
          loop s1
          
          mov dx,0
          mov bx,0
          inc si
          add di,160
          pop cx
          loop s0
          
          mov ax,4c00h
          int 21h
          
dmd ends
end start





好心人帮忙看一下实验九的作业电脑编译显示无法打开masm ,帮忙看看有没有错误错在哪里   要求是三行‘welcome to masm’三行颜色不一样   不用在意文字颜色颜色是按照自己喜好乱写的跟作业要求可能不一样

jackz007 发表于 2022-10-12 23:42:58

本帖最后由 jackz007 于 2022-10-12 23:47 编辑

      编译一下这个代码看看可不可以通过,我这里 WinXP + MASM 5.10B 可以成功编译
assume cs:code , ds:data

data segment para public 'DATA'
message db'welcome to masm ! ' , 00h ; 定义要显示的字符共16个字节
color   db41h,24h,14h    ; 分别为红底蓝字,绿底红字,蓝底红字的颜色码
data ends

stack segment para stack
      dw 800h dup(00)
stack ends

code segment para public 'CODE'
main proc far
      mov ax , data
      mov ds , ax
      mov ax , 0B800H            ; 显存段起始地址
      mov es , ax                ;
      mov si , offset message
      mov di , 160 * 10 + 2 * 31 ; 从 11 行,31 列 开始显示
      mov cx , 3               ;
      mov bx , offset color
m1:   push si                  ;
      push di                  ;
      push cx                  ;
      cld
m2:   lodsb
      or al , al
      jz m3
      stosb
      mov al,byte ptr ds:
      stosb
      jmp short m2
m3:   pop cx
      pop di
      pop si
      add di , 160
      inc bx
      loop m1
      xor ax,ax
      int 16h
      mov ax,4c00h
      int 21h
main endp
code ends
end main
页: [1]
查看完整版本: 实验九的作业