. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  一个菜鸟关于实验九的参考答案的一些改写,惭愧,自己写不出  [待解决] 回复[ 4次 ]   点击[ 587次 ]  
ldllihuanfa
[帖 主]   [ 发表时间:2010-01-13 21:28 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:1
注册日期:2009-12-24 11:13
其实能有勇气学到这一章我自己都觉得不可思议了,毕竟自己也没有什么太多基础,不过就是上网上了五年而已。也快四十岁的人了。希望自己能一直坚持下去吧。
这一章的实验程序我没写出来,看了一些别人写的,觉得很佩服。学汇编我想现在对于我来说最重要是学懂吧。
参考答案中的写法我看了好久我才看明白大概是个什么意思,其实论坛的很多写法简单很多了,不过它的思路好象有点意思。只是我觉得有些好象没必要那么写,就自己按照它的思路稍稍改了一下,也算是通过了吧。

下面是我改写的。。希望高手别笑,错误的地方请指出。也给一些和我一样的菜鸟提供一些想法吧。

assume cs:code,ds:data,ss:stack

data segment
db'welcome to masm!'
db 02h,24h,71h
data ends
stack segment
dw 8 dup(0)
stack ends

start:
     start:
     mov ax,data
     mov ds,ax
     mov ax,stack
     mov ss,ax
     mov sp,10h
     mov ax,0b872h
     mov es,ax
     mov bx,0
     mov di,0
     
     
    mov cx,3
s3: push cx
    push di
    mov si,0
    mov di,0
    

    mov cx,10h
s1: mov al,ds:[di]
    mov es:[bx+si],al
    inc di
    add si,2
    loop s1

     mov si,1
     pop di
     mov al,ds:[di+10h]
     mov cx,10h

s2: mov es:[bx+si],al
      add si,2
      loop s2

      
       inc di
      add bx,0a0h
       pop cx
       loop s3
     mov ax,4c00h
        int 21h

code ends
end start
ldllihuanfa
[第1楼]   [ 回复时间:2010-01-13 21:34 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:1
注册日期:2009-12-24 11:13
其实意思是基本一样的,就是写法有一点不同
versaariel
[第2楼]   [ 回复时间:2010-01-14 10:19 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
没仔细看,LZ精神可佳,向你学习^-^,加油
ldllihuanfa
[第3楼]   [ 回复时间:2010-01-14 21:52 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:1
注册日期:2009-12-24 11:13
又搞了一天,还是和那个思路,引发出来的一个新写法,,先保存在这儿,也总算自己写出了一个,不管好不好,这一章就算勉强可以过了。

assume cs:code,ds:data,ss:stack
data segment
db'welcome to masm!'
db 02h,24h,71h
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:

 mov ax,data
     mov ds,ax
     mov ax,stack
     mov ss,ax
     mov sp,10h
     mov ax,0b872h
     mov es,ax
     mov bx,0
     mov si,0
mov cx,16
s1: mov al,[bx]
                      
    mov es:[si],al
    mov es:[si+0a0h],al
    mov es:[si+140h],al
   inc bx
    add si,2
    loop s1
      mov bx,0
     
      mov bp,0
      mov cx,3

    s3: mov al,[bx+10h]

        push cx
        mov si,0
       mov cx,16
    s2: mov es:[si+1+bp],al
       
        add si,2
       loop s2
       inc bx
       add bp,0a0h
       mov si,0
       pop cx
     loop s3

  mov ax,4c00h
  int 21h
code ends
end start
xueyugaoyuan
[第4楼]   [ 回复时间:2012-08-20 21:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-08-14 17:57
这是最简单的思路了,好。写的不错:
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved