鱼C论坛

 找回密码
 立即注册
查看: 2142|回复: 5

求 王爽版汇编第八章 加详细注释的源代码 越详细越好好谢谢

[复制链接]
发表于 2012-9-27 23:25:53 | 显示全部楼层 |阅读模式
5鱼币
对第八章的代码看的不是很懂 希望谁能给加个详细的注释  谢谢啊 新手的苦恼
这是代码 随便一个加注释就行
实验七 寻址方式在结构化访问中的应用(两个程序)



程序一:四个循环

assume cs:codesg,ds:data,es:table

data segment

    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'

    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'

    db '1993','1994','1995'

    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514

    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

    dw 11452,14430,15257,17800

data ends

table segment

    db 21 dup ('year summ ne ?? ')

table ends

codesg segment

start:  mov ax,data

        mov ds,ax

        mov ax,table

        mov ss,ax

        mov bx,0

        mov si,0

        mov bp,0

        mov cx,21

s0:mov ax,[bx+si]

   mov [bp+0],ax

   add si,2

   mov ax,[bx+si]

   mov [bp+2],ax

   add si,2

   add bp,10h

   loop s0



   mov cx,21

   mov bp,0

   mov si,0

s1:mov ax,[bx+si+84]

   mov [bp+5],ax

   add si,2

   mov ax,[bx+si+84]

   mov [bp+7],ax

   add si,2

   add bp,10h

   loop s1



   mov cx,21

   mov bp,0

   mov si,0

s2:mov ax,[bx+si+168]

   mov [bp+10],ax

   add si,2

   add bp,10h

   loop s2



   mov cx,21

   mov bp,0

s3:mov ax,[bp+5]

   mov dx,[bp+7]

   div word ptr [bp+10]

   mov [bp+13],ax

   add bp,10h

   loop s3



    mov ax,4c00h

    int 21h

codesg ends

end start

----------------------------------华丽的分割线---------------------------------

程序二:一个循环

assume cs:code,ds:data,es:table

data segment

    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'

    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'

    db '1993','1994','1995'

    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514

    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

    dw 11452,14430,15257,17800

data ends

table segment

    db 21 dup ('year summ ne ?? ')

table ends

code segment

start:  mov ax,data

        mov ds,ax

        mov ax,table

        mov es,ax

        mov bx,0

        mov si,0

        mov di,0

        mov cx,21

s:      mov ax,[bx]

        mov es:[si],ax

        mov ax,[bx].2

        mov es:[si].2,ax



        mov ax,[bx].84

        mov es:[si].5,ax

        mov dx,[bx].86

        mov es:[si].7,dx



        div word ptr ds:[di].168

        mov es:[si].13,ax

        

        mov ax,[di].168

        mov es:[si].10,ax



        add di,2

        add bx,4

        add si,16

        loop s



        mov ax,4c00h

        int 21h

code ends

end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-27 23:25:54 | 显示全部楼层
DATAS  SEGMENT 
              DB        '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982' 
              DB        '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990' 
              DB        '1991', '1992', '1993', '1994', '1995' 
                ;以上是表示21年的21个字符串
                ;偏移地址是0-53h 十进制是84-1

              DD        16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514 
              DD        345980, 590827, 803530, 118300, 184300, 2759000, 3753000, 4649000, 5937000 
                ;以上是表示21年公司总收入的21个dword型数据
                ;偏移地址从54h-a7h 十进制是84*2=168-1
              DW        3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226 
              DW        11542, 14430, 15257, 17800 
                ;以上是表示21年公司雇员人数的21个word型数据
                ;偏移地址从a8h-d1h 十进制是168+42=210-1
       DATAS  ENDS 

       TABLE  SEGMENT 
              DB        21 DUP ('year summ ne ?? ') 
                ;偏移地址从E0-220 十进制是21*16=336d=150h-10h+e0h=220h
                ;可以将地址给ES 用-D ES来查看
                ;0B4F:0000  79 65 61 72 20 73 75 6D-6D 20 6E 65 20 3F 3F 20   year summ ne ??
                ;根据上面的定位
       TABLE  ENDS 

      STACKS  SEGMENT 
              DB 16 DUP (0) 
      STACKS  ENDS 

ASSUME    CS:CODES,DS:DATAS,SS:STACKS 

       CODES  SEGMENT 
      START: 
              ;相关寄存器初始化 
              MOV       AX,DATAS 
              MOV       DS,AX 
              MOV       AX,TABLE 
              MOV       ES,AX 
              MOV       AX,STACKS 
              MOV       SS,AX 
              MOV       SP,16 
     
              MOV       BX,0 
              MOV       BP,0 
              MOV       DI,0 
              MOV       SI,0 

              MOV       CX,21 

      cycle:  ;使用栈复制年份 
              push                 0[di]
              PUSH      [DI].2
              POP       ES:[BP].2
              POP       ES:[BP].0
               
              ;使用栈复制收入 
              PUSH 54H.[DI].0
              PUSH 54H.[DI].2
              POP       ES:[BP].7 
              POP       ES:[BP].5 

              ;使用栈复制雇员数 
              PUSH      0A8H.[SI] 
              POP       ES:[BP].0AH 

              ;计算人均收入 
              MOV       AX,ES:[BP].5 
              MOV       DX,ES:[BP].7 
              DIV WORD PTR ES:[BP].0AH 
              MOV       ES:[BP].0DH,AX 

              ADD       SI,2H 
              ADD       DI,4H 
              ADD       BP,10H 

              loop cycle 
                    

              MOV       AH,4CH 
              INT       21H 
       CODES  ENDS 
END       START
; 栈的使用、结构化程序设计的思想... 
; 话就不多说了,自己体会吧

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-28 07:15:34 | 显示全部楼层
你可以百度一下实验7的答案 里边是带注释的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-9-28 22:22:12 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-29 01:07:27 | 显示全部楼层
en..:lol:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-30 20:17:20 | 显示全部楼层
你可以百度一下实验7的答案 里边是带注释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 01:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表