找回密码
 立即注册
查看: 2805|回复: 0

汇编作业 实验13(1)

[复制链接]

78

主题

109

回帖

1023

积分

高级会员

积分
1023

猴年

龙龙实名认证 发表于 2015-6-22 03:14:56 | 显示全部楼层 |阅读模式
  
  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:[7ch*4], 200H    ; 设置中断向量表
  mov word ptr es:[7ch*4+2], 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, [si]
  jcxz printret  ; 判断字符串是否结束,结束则返回
  mov es:[di], cl  ; 显示字符
  mov es:[di+1], 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

7

主题

215

回帖

959

积分

高级会员

积分
959
nikkitang 发表于 2015-6-27 02:29:25 | 显示全部楼层
每天学习,一定会进步的,加油!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|虫虫联盟 ( 备案号:蜀ICP备15018121号-1 )

GMT+8, 2026-4-19 13:00 , Processed in 2.402459 second(s), 26 queries .

Powered by Discuz! X5.0 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表