. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9,我用30行代码完成!  [待解决] 回复[ 2次 ]   点击[ 319次 ]  
crg007
[帖 主]   [ 发表时间:2010-05-09 19:50 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:4
注册日期:2009-07-29 23:59
assume cs:dm,ds:sj
sj segment
  db 'welcome to masm!'
sj ends

dm segment
yk:mov ax,sj
   mov ds,ax
   mov ax,0b800h  
   mov es,ax                          ;设置屏幕显示区的段地址

   mov di,0
   mov bx,0
   mov si,0
   mov cx,16

 s:mov al,[di]                       ;将字符送入寄器AL中 
   mov byte ptr es:[bx+si+1984],al   ;将字符在屏幕的第12行的中间位置显示 
   mov byte ptr es:[bx+si+1985],02h  ;设置字符显示为绿色

   add bx,0a0h                       ;换行设置
   mov byte ptr es:[bx+si+1984],al   ;将字符在屏幕的第13行的中间位置显示
   mov byte ptr es:[bx+si+1985],24h  ;设置字符显示为绿底红字字符


   add bx,0a0h                       ;换行设置
   mov byte ptr es:[bx+si+1984],al   ;将字符在屏幕的第14行的中间位置显示
   mov byte ptr es:[bx+si+1985],71h  ;设置字符显示为白底蓝字字符
   
   mov bx,0                          ;设置行位倒回第12行
   add si,2                          ;设置要显示在屏幕中间的下一个字符的偏移地址
   inc di                            ;设置要读取下一个字符的偏移地址
   loop s

   mov ax,4c00h
   int 21h
dm ends
end yk
zhouxiao
[第1楼]   [ 回复时间:2010-05-09 20:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-01 09:12
好吧,我的代码修改了一天,修改出了只有29行的代码,请看:
assume cs:codesg,ds:data                
data segment                                                ;段地址为0B800h,偏移地址7c0h
        db 'welcome to masm!'                                ;16个字节
data ends
codesg segment
        start:        mov ax,data
                mov ds,ax
                mov bx,0h
                mov si,0h
                mov ax,0b800h
                mov es,ax                                ;直接将段地址0b800h放进es
                mov cx,16
        s:        mov al,[bx]
                mov es:[7c0h+si],al                ;显示第一行字符串
                mov es:[860h+si],al                ;显示第二行字符串
                mov es:[900h+si],al                ;显示第三行字符串
                mov al,2h                        ;绿色
                mov es:[7c1h+si],al                ;设置第一行字符串颜色
                mov al,24h                        ;绿底红色
                mov es:[861h+si],al                ;设置第二行字符串颜色
                mov al,71h                        ;白底蓝色
                mov es:[901h+si],al                ;设置第三行字符串颜色
                add si,2h
                add bx,1h
                loop s
                mov ax,4c00h
                int 21h
codesg ends
end start
ballage
[第2楼]   [ 回复时间:2024-02-18 13:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2023-10-04 20:30
厉害
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved