. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  实验9课业完成思路  [待解决] 回复[ 3次 ]   点击[ 703次 ]  
769698836
[帖 主] [ 发表时间:2015-02-16 22:24 ] 
荣誉值:0
信誉值:0
注册日期:2015-02-16 21:57
assume cs:codesg
data segment

db 'welcome to masm!'

data ends


codesg segment

start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0
mov bx,0
mov cx,16
s0:
mov al,ds:[bx]
mov ah,02h
mov es:[si+720h],ax
mov ah,24h
mov es:[si+7c0h],ax
mov ah,71h
mov es:[si+860h],ax
inc bx
add si,2h
loop s0

mov ax,4c00h 
int 21h 
          
           
codesg ends 

end start

这实验完成的思路:ASCII码和属性放到屏幕的中间也就是11,12,13行(屏幕总共有25行),11行的地址是b8000+(11行*160字节在转成16进制就是6E0),因为一行有80个字符,我们要16个字符放中间也就是前面要有32个字符就是64个字节,所以11行的地址就是b8000+6e0+40=b8720,然后12,13行同理就多个A0就好,这题一开始我用就用个bx来寻址发现不行因为代码段的字符是1个字节的,然而到下一次循环(w下一个字符e的时候)地址要加2因为是ax(16位的)所以又加多了一个si,整体的思路比较简单
vahe257
[第2楼] [ 回复时间:2017-07-30 12:14 ] 
荣誉值:0
信誉值:0
注册日期:2017-07-30 12:11
有什么好高兴的。。一个这么简单的东西 还得意
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved