+ -
当前位置:首页 → 问答吧 → 有人可以帮忙解释一下这些代码么??

有人可以帮忙解释一下这些代码么??

时间:2011-12-26

来源:互联网

OUTBIT equ 08002h
OUTSEG equ 08004h

data segment
Content db 0,1,2,3,4,5
LEDBuf db 6 dup(?)
LEDMAP:
  db 3fh,06h,5bh,4fh,66h,6dh,7dh,,07h
  db 7fh,6fh,77h,7ch,39h,5eh, 79h,71h
data ends
code segment
  assume cs:code, ds:data

Delay proc  
  push cx
  mov cx,100h
  loop $
  pop cx
  ret
Delay endp
DisplayLED proc near
  mov bx, offset LEDBuf
  mov cx, 6
  mov ah, 00100000b
DLoop: mov dx, OUTBIT
  mov al, 0
  out dx,al
  mov al, [bx]
  mov dx, OUTSEG
  out dx,al
  mov dx, OUTBIT 
  mov al, ah
  out dx, al
  call Delay
  shr ah, 1
  inc bx
  loop Dloop
  ret
DisplayLED endp
Start proc near
  mov ax, data
  mov ds, ax
  mov cx,6
  mov ah,0
  mov si,offset ledbuf
redo: mov bx,offset content
  mov al,ah
  xlat
  mov bx,offset ledmap
  xlat
  mov [si],al
  inc si
  inc ah
  loop redo  
show: call DisplayLED
  jmp show
start endp
code ends
  end start

谢谢~~

作者: davidwhj03   发布时间: 2011-12-26

老大,你这也太长了吧。。。。
OUTBIT equ 08002h
OUTSEG equ 08004h ;符号常量,用outbit和outseg分别代替其后16进制常量

data segment ;数据段定义 
Content db 0,1,2,3,4,5 ;定义字节变量content,内存中的初值依次为0,1,2……
LEDBuf db 6 dup(?) ;重复定义字节变量ledbuf 占6个字节,没有初值,仅预留空间
LEDMAP:
  db 3fh,06h,5bh,4fh,66h,6dh,7dh,,07h
  db 7fh,6fh,77h,7ch,39h,5eh, 79h,71h ;字节变量ledmap,初值依次为3f,06……
data ends ;数据段定义结束,以上变量初值在内存中依次排列,每个数值占一个字节,包括预留的。 
code segment ;代码段定义
  assume cs:code, ds:data ;说明段名与段寄存器的关系

Delay proc ;定义过程delay 主要起延时作用
  push cx
  mov cx,100h
  loop $ ;重复执行当前偏移地址,直至cx当中国的内容为零,然后出栈
  pop cx
  ret ;过程返回
Delay endp ;过程定义结束
DisplayLED proc near ;受不了了。。。。。这样写下去会死的。。你还是挑不懂的问吧。。?大概就是以一定规则循环输出led灯状态的功能吧。
  mov bx, offset LEDBuf
  mov cx, 6
  mov ah, 00100000b
DLoop: mov dx, OUTBIT
  mov al, 0
  out dx,al
  mov al, [bx]
  mov dx, OUTSEG
  out dx,al
  mov dx, OUTBIT  
  mov al, ah
  out dx, al
  call Delay
  shr ah, 1
  inc bx
  loop Dloop
  ret
DisplayLED endp
Start proc near
  mov ax, data
  mov ds, ax
  mov cx,6
  mov ah,0
  mov si,offset ledbuf
redo: mov bx,offset content
  mov al,ah
  xlat
  mov bx,offset ledmap
  xlat
  mov [si],al
  inc si
  inc ah
  loop redo  
show: call DisplayLED
  jmp show
start endp
code ends
  end start

作者: wjv22   发布时间: 2011-12-27

热门下载

更多