. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  用单循环编出的实验九  [待解决] 回复[ 9次 ]   点击[ 529次 ]  
qinaode12
[帖 主] [ 发表时间:2008-12-14 16:06 ] 
荣誉值:0
信誉值:4
注册日期:2008-09-09 21:27
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start:mov ax,data
      mov ds,ax
      mov ax,0B872h;设置屏幕中间位置段地址
      mov es,ax
      mov bx,0
      mov si,0
      mov cx,16
      
    s:mov al,[bx]
      mov ah,02h
      mov es:[si],ax      ;三行中的第一行
      mov ah,24h
      mov es:[si+0a0h],ax ;三行中的第二行(同一列,相邻两行相差160个字符,段地址相差a0h)
      mov ah,71h
      mov es:[si+140h],ax ;三行中的第三行
      inc bx
      add si,2
      loop s
    
     mov ax,4c00h
     int 21
code ends
end start

请大家评论一哈!!!
momo023
[第7楼] [ 回复时间:2009-11-24 21:59 ] 
荣誉值:0
信誉值:0
注册日期:2009-09-08 19:29
写这个程序时一直想的是怎样用转移来做 思路很简单 这个是我的程序  就是长了点 
assume cs:code ds:data ss,stack

data segment 
   db 'welcome to masm!'
data ends

stack segment
   dw 0,0,0
stack ends   
 
code segment      
     start: mov ax,data
            mov ds,ax
            mov ax,0b800h
            mov es,ax
            
            push offset s3
            push offset s2
            push offset s1 
               
            mov ah,02h
            mov di,0
            
         s0:mov bx,0            
            mov cx,16         
         s:mov al,[bx] 
            mov es:[di],ax
            inc bx
            add di,2
            loop s
            pop si
            jmp si
            
         s1:mov ah,24h
            mov di,0a0h
            jmp s0

         s2:mov ah,71h
            mov di,140h
            jmp s0
            
         s3:mov ax,4c00h
            int 21h            
code ends
end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved