麻烦高手给我注释汇编代码(注意:每行都注释),万分感谢!

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:01:18
data segment
bar db ?,'*',?,'=',4 dup(' '),'$'
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,9
lop1:
push cx
mov al,cl
mov bl,al
or al,30h
mov [bar],al
lop2:
push cx
mov al,cl
or al,30h
mov [bar+2],al
mov al,cl
call printit
pop cx
loop lop2
call newline
pop cx
loop lop1
mov ax,4c00h
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;; newline proc ;;;;;;;;;;;;;;;;;;;;;;;;;;
newline proc
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
newline endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;; printit proc ;;;;;;;;;;;;;;;;;;;;;;;;;
printit proc
push bx
xor ah,ah
mul bl
mov bl,0ah
div bl
or al,30h
or ah,30h
mov word ptr [bar+4],ax
mov dx,offset bar <

每行写注释 ?
楼下的 你来吧!!

data segment ;关联数据段
bar db ?,'*',?,'=',4 dup(' '),'$';定义了未初始化数据,*号,未初始化数据,=号,四个空格,$号
data ends ;数据段结束

code segment ;关联数据段
assume cs:code,ds:data ;定义CS指向code段,DS指向data段
start: ;一个叫start的标号
mov ax,data ;把DATA的段地址传到AX中
mov ds,ax ;把AX的值传到DS中 注:这里是为了把DATA的段地址得复制到DS中,但是立即数不能直接传到段寄存器中,所以引用的中间寄存器
mov cx,9 ;把CX设成9,为下面的LOOP指令设置最大的循环次数
lop1: ;叫lop1的标号
push cx ;把CX入栈,这里因为后面的指令会影响CX的值,保护起来
mov al,cl ;把CL的值传给AX
mov bl,al ;把AL的值传给BL
or al,30h ;把AL的位6位5置1
mov [bar],al ;把AL的值传到第二行第一个问号(未初始化数据)那里
lop2: ;标号lop2
push cx ;压CX入栈;理由同上
mov al,cl ;传CL到AL
or al,30h ;把AL的位6位5置1
mov [bar+2],al ;