标题:汇编代码求详细注释
只看楼主
q309533398
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-6-9
结帖率:0
已结贴  问题点数:0 回复次数:4 
汇编代码求详细注释
; multi-segment executable file template.

data segment
    ; add your data here!
    pkey db "press any key...",13,'$'
    wa1 db "0--59",13,'$'
    wa2 db "60--74",13,'$'
    wa3 db "75--89",13,'$'
    wa4 db "90--100",13,'$'
    aa:db 50,52,53,54,55,60,62,63,64,65,70,72,73,74,75,80,85,90,95,99
ends

stack segment
    dw   128  dup(0)
ends

code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax

    ; add your code here
lea si,aa   
mov cx,20
 mov al,0  
 mov dh,0
 mov bl,0
 mov bh,0
next:
cmp [si],60
jnb  a1
add al,1   

jmp  wahaha

a1:cmp [si],75   
jnb  a2
add dh,1
jmp  wahaha

a2:cmp [si],90  
jnb  a3
add bl,1
jmp  wahaha

a3:add bh,1
 
wahaha:
inc si

loop next
lea dx, pkey
    mov ah, 9
    int 21h
ADD AL,48
MOV DL,AL
MOV AH,2
INT 21H  
lea dx, pkey
    mov ah, 9
    int 21h
ADD dh,48
MOV DL,dh
MOV AH,2
INT 21H  
lea dx, pkey
    mov ah, 9
    int 21h
ADD bl,48
MOV DL,bl
MOV AH,2
INT 21H  
lea dx, pkey
    mov ah, 9
    int 21h
ADD bh,48
MOV DL,bh
MOV AH,2
INT 21H

ret

            
    lea dx, pkey·
    mov ah, 9
    int 21h        ; output string at ds:dx
   
    ; wait for any key....   
    mov ah, 1
    int 21h
   
    mov ax, 4c00h ; exit to operating system.
    int 21h   
ends

end start ; set entry point and stop the assembler.
求每一句代码的详细注释,很重要,我是新手,谢谢了!
搜索更多相关主题的帖子: 128 registers file 
2011-06-09 18:21
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
得分:7 
我觉得你先把你思考的说说,代码大概什么目的,至少有几句你明白吧,注释上去
这样提问太赤裸裸了,版主会生气的
2011-06-09 20:14
qiu1123
Rank: 1
来 自:福建
等 级:新手上路
帖 子:8
专家分:7
注 册:2011-6-10
得分:7 
还是看不懂
2011-06-10 00:25
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:7 
以下是引用obstratiker在2011-6-9 20:14:30的发言:

我觉得你先把你思考的说说,代码大概什么目的,至少有几句你明白吧,注释上去
这样提问太赤裸裸了,版主会生气的

呵呵 我不生气啊

有人问这样的问题 我不反对 有人回答 我也不反对

如果我觉得是不合适发在这里我会转走的。。
2011-06-10 10:45
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
得分:0 
assume cs:code

data segment
    ; add your data here!
    pkey db "press any key...",13,'$'
    wa1 db "0--59",13,'$'
    wa2 db "60--74",13,'$'
    wa3 db "75--89",13,'$'
    wa4 db "90--100",13,'$'
    aa db 50,52,53,54,55,60,62,63,64,65,70,72,73,74,75,80,85,90,95,99
data ends

stack segment
    dw   128  dup(0)
stack ends

code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax                        ;把 data 地址放入 ds 和 es
    mov es, ax

    ; add your code here
lea si,aa                           ;把 aa 地址放入 si
mov cx,20

mov al,0                          ;初始化四组数据,都为零
mov dh,0
mov bl,0
mov bh,0



next:
cmp [si],60                         ;判断 aa 中的数是否小于 60
jnb  a1                            ;否则跳转到 a1            
add al,1                            ;是则 al 的值加 1
jmp  wahaha                        ;跳转到 wahaha


a1:
cmp [si],75                        ;判断 aa 中的数是否小于 75   
jnb  a2                            ;否则跳转到 a2
add dh,1                         ;是则 dh 的值加 1
jmp  wahaha                        ;跳转到 wahaha


a2:
cmp [si],90                        ;晕……判断 aa 中的数是否小于 90
jnb  a3                            ;否则跳转到 a3
add bl,1                         ;是则 bl 的值加 1
jmp  wahaha                        ;跳转到 wahaha


a3:add bh,1                        ; bh 的值加 1

wahaha:
inc si                            ; si 的值加 1

loop next                        ; next: 之后,loop next之前的内容重复执行 20 次      



lea dx, pkey                        ; 把 pkey 的地址放入 dx
    mov ah, 9                        ;输入中断功能号
    int 21h                        ;调用 21 号中断(9号功能),显示 dx 所指向的字符的内容
ADD AL,48                        ; al 中的值加 48
MOV DL,AL                        ;将 al 的值存入 dl 中
MOV AH,2                        ;输入中断功能号
INT 21H                            ;调用 21 号中断(2号功能),输出 dl 中的字符


                          
lea dx, pkey                        ; 把 pkey 的地址放入 dx   
    mov ah, 9                        ;输入中断功能号
    int 21h                        ;调用 21 号中断(9号功能),显示 dx 所指向的字符的内容
ADD dh,48                        ; dh 中的值加 48
MOV DL,dh                        ; 将 dh 的值存入 dl 中
MOV AH,2                        ;输入中断功能号
INT 21H                          ;调用 21 号中断(2号功能),输出 dl 中的字符


lea dx, pkey                        ;以下基本同上……
    mov ah, 9
    int 21h
ADD bl,48                        
MOV DL,bl
MOV AH,2
INT 21H

  
lea dx, pkey
    mov ah, 9
    int 21h
ADD bh,48
MOV DL,bh
MOV AH,2
INT 21H



              
    lea dx, pkey
    mov ah, 9
    int 21h        ; output string at ds:dx
   
    ; wait for any key....   
    mov ah, 1
    int 21h
   
    mov ax, 4c00h ; exit to operating system.
    int 21h   
code ends

end start
2011-06-10 12:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342328-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.105611 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved