龙龙 发表于 2015-6-22 03:14:56

汇编作业 实验13(1)

  
  assume cs:code, ds:data
  data segment
  db 'hello world', 0
  data ends
  code segment
  start:
  mov ax, cs
  mov ds, ax
  mov si, offset print      ; ds:si指向源地址
  mov ax, 0
  mov es, ax
  mov di, 200H          ; es:di指向目的地址
  mov cx, offset printend-offset print; cx为传输长度
  cld             ; 传输反向为正
  rep movsb
  mov word ptr es:, 200H    ; 设置中断向量表
  mov word ptr es:, 0
  mov dh, 10
  mov dl, 10
  mov cl, 2
  mov ax, data
  mov ds, ax
  mov si, 0; ds:si指向待显示字符串地址
  int 7ch
  mov ax, 4c00H
  int 21H
  ; ****************************************
  ; 子函数print
  ; 显示一个用0结束的字符串
  ; (dh)=行号, (dl)=列号, (cl)=颜色, ds:si指向字符串首地址
  print:
  push es
  push di
  push ax
  push cx
  mov ax, 0b800H
  mov es, ax
  mov ax, 160
  mul dh
  mov di, ax
  mov ax, 2
  mul dl
  add di, ax   ; es=0b800H, di=dh*160+dl*2, es:di为显示区地址
  mov al, cl   ; 颜色存到al中
  s0:
  mov ch, 0
  mov cl,
  jcxz printret; 判断字符串是否结束,结束则返回
  mov es:, cl; 显示字符
  mov es:, al; 字符颜色
  inc si
  add di, 2
  jmp short s0
  printret:
  pop cx
  pop ax
  pop di
  pop es
  iret
  printend:
  nop
  ; ****************************************
  code ends
  end start

nikkitang 发表于 2015-6-27 02:29:25

每天学习,一定会进步的,加油!
页: [1]
查看完整版本: 汇编作业 实验13(1)