. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
主题 : :  实验9,交作业。  [已解决] 回复[ 7次 ]   点击[ 319次 ]  
jjch224
[帖 主] [ 发表时间:2010-07-17 22:43 ] 
荣誉值:16
信誉值:0
注册日期:2010-07-09 09:48
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 cx,10h
        mov si,0h
        mov di,0h        

s:
        mov bx,0h;找不到中间位置,只能用bx来代替了,郁闷中。
        mov ah,02h
        mov al,ds:[si]
        mov es:[bx+40h+di],ax
        add bx,0a0h
        mov ah,24h
        mov al,ds:[si]
        mov es:[bx+40h+di],ax
        add bx,0a0h
        mov ah,71h
        mov al,ds:[si]
        mov es:[bx+40h+di],ax
        mov bx,0b40h
        inc si
        add di,2h
        loop s        
        mov ax,4c00h
        int 21h
codesg ends
end start
感觉这个实验没能很好的总结前面的知识,因为jmp和jcxz这些指令都用不上,要不就是用在这里面比较便扭。不知c中的if、 else if的语句在汇编里面是咋整的?
towersimper
[第6楼] [ 回复时间:2010-07-23 15:36 ] 
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16
一页25行,我们要显示3行在中间,那么中间位置应该是(25-3)/2,也就是11 12 13行。一行占a0h个字节,由此可以推出中间位置的第一行应该是11*160转化为十六进制就是6e0h,第二行6e0h+a0h,第三行6e0h+a0h+a0h。
------------------
回复:找的位置跟我一样。不错。呵呵。
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved