求 汇编语言 程序 注释
http://zhidao.baidu.com/question/751835143779744124.html?oldq=1
参考一下:
http://hi.baidu.com/do_sermon/item/e10ae723bd231dd30e37f9d2
--------
楼主的程序的功能,是在屏幕上显示一批彩色的符号。
程序写的较滥,不易理解。
简化后如下,功能不变,看看是否容易理解一些:
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
T DB '0123456789ABCDEF'
DATA ENDS
CODE SEGMENT
MAIN:
MOV AX, DATA
MOV DS, AX
MOV AX, 0B800H
MOV ES, AX
MOV AH, 4 ;红色
MOV AL, 0 ;从零开始
MOV DI, 0 ;第零行
JMP ROW1
COLUMN:
SUB DI, 25 * 160 ;4000,回到第零行
ADD DI, 14 ;列号加七
ROW1:
MOV BH, 25 ;共25行
ROW:
MOV ES:[DI], AX
PUSH AX
PUSH BX
;--------------------------------
MOV AH, 0
MOV BL, 16
DIV BL
MOV CX, AX
MOV BH, 0
MOV BL, CL
MOV AH, 02H ;绿色
MOV AL, T[BX] ;ASCII
MOV ES: [DI + 2], AX
MOV BL, CH
MOV AL, T[BX] ;ASCII
MOV ES: [DI + 4], AX
;--------------------------------
POP BX
POP AX
INC AL
CMP AL, 0
JE EXIT ;为零结束
ADD DI, 160 ;转到下一行
DEC BH
CMP BH, 0
JNZ ROW
JMP COLUMN
EXIT:
MOV AH, 4CH
INT 21H
CODE ENDS
END MAIN
num1 db 'please input a number(0-9):',0dh,0ah,'$' ;(这的0dh,0ah起什么作用?回车换行作用.如果没有这些,则你输入的数,将出现在please...这句话的后面.)
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,28bh
mov al,80h
out dx,al
l1: call crlf ;(为什么写入控制字后就开始调用过程?这要看这个被调用的过程有什么作用了.)
lea dx,num1
mov ah,09h
int 21h
mov ah,01h
int 21h
cmp al,'0'
jb exit
cmp al,'9'
ja exit
sub al,30h
lea bx,led
xlat
mov dx,288h
out dx,al
jmp l1
exit: mov ah,4ch
int 21h
crlf proc near ;(重点! 这个过程实现什么功能:回车换行作用)
mov dl,0dh ;直接把ODH送入DL就可以实现回车吗:不,现在是先将回车符送入DL,再调用中断显示出来.
mov ah,02h ;这个中断指令有什么功能:将DL中的数据,显示在显示屏上
int 21h
mov dl,0ah ;直接把OAH送入到DL就可以实现换行吗:原理同上
mov ah,02h
int 21h
ret
crlf endp
code ends
end start
谷馥凯韦: 汇编语言的注释是每行从分号“;”开始的,分号之后的内容都属于注释.一般而言,汇编语言的注释在以下几个地方:1、程序的最前面,注释内容一般说明该程序总的说明,解释程序的主要功能,程序的版本号,程序的修改日志,程序的编制...
宣州区15626434586: 汇编语言代码一段,求注释! - ?
谷馥凯韦: START: MOV AX,DATA ;用ax寄存器过渡,因为偏移地址不能直接传送给段寄存器 MOV DS,AX ;将ax得值传送给ds MOV BX,OFFSET GRAY ;将gray数组的首地址传送给 bx寄存器 MOV CX,COUNT ;count变量内容是5,这句指令是将count内容传送给cx,由此看来设置循环次数 CYCLE:IN AL,01H ;将01端口输出一个字节数据 XLAT ;查表指令,此指令将bx:al中的一个字节内容取出送给al中 out 02h,al;将al中内容输出给02端口 LOOP CYCLE ;循环指令,没存循环到cycle标号向下执行直到cx=0时候在停止循环,ret;返回指令
宣州区15626434586: 求 汇编语言 程序 注释 - ?
谷馥凯韦: data segment num1 db 'please input a number(0-9):',0dh,0ah,'$' ;(这的0dh,0ah起什么作用?回车换行作用.如果没有这些,则你输入的数,将出现在please...这句话的后面.) led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh data ends code ...
宣州区15626434586: 求此汇编语言程序的注释 最好能逐条解释 3Q啊 我只有5分 555555.... - ?
谷馥凯韦: 输入十进制数 输出并显示16进制数 code segment ;代码段开始 assume cs: code ;指示代码段寄存器内容 org 100h ;org是汇编器的伪指令,是告诉编译器下一条汇编语句的偏移地址 start:MOV bx, 0 input : MOV ah, 01 ;AH=01 功能从键盘读入一...
宣州区15626434586: 汇编语言,求注释,越详细分越高 - ?
谷馥凯韦: 可以简化一些,功能不变:ASSUME CS:CODE, DS:CODE CODE SEGMENT STR DB '0FEDCBA9876543210FEDCBA9876543210' START: PUSH CS POP DS MOV AH, 2 MOV SI, 16 NXT:MOV BX, 16 DSP:MOV DL, STR[SI + BX] INT 21H MOV DL, ' ' INT 21H DEC BX JNZ DSP MOV DL, 0AH INT 21H MOV DL, 0DH INT 21H DEC SI JNZ NXT MOV AH, 4CH INT 21H CODE ENDS END START
宣州区15626434586: 谁帮我注释一下下面单片机汇编语言啊!! - ?
谷馥凯韦: 这是一段反汇编程序吧,程序不全,也有点乱,直接照原样注释的.MOV @R0,A ;将累加器的值送R0所指示的地址DJNZ R0,IDATALOOP ;如果R0不为0则转移到IDATALOOPMOV SP,#0x64 ;堆栈栈顶设为64HLJMP C:03CC ;跳转...
宣州区15626434586: 急!汇编语言程序功能和语句注释 - ?
谷馥凯韦: MOV R0, #30H //将立即数30H放入R0 MOV A, @R0 //取地址30H的数据 INC R0 //R0加1后放回R0 R0=31H ADD A, @R0 //将地址31H内的数据加上A后,放回A DA A //将A调整为十进制 INC R0 //R0加1后放回R0 R0=32H MOV @R0, A //将A放入地址32H中 SJMP $ //等待 其实这段是实现了将地址30H和地址31H的相加,最后放入地址32H中
宣州区15626434586: 汇编语言程序设计,求极值..麻烦写注释 - ?
谷馥凯韦: MIN: MOV R0,#30H MOV R2,#10 LP: MOV A,@R0 CJNE A,B,LP1 ;与B比较,B初始值无所谓 LP1: JNC LP2 ;如果A>=B则转移取下一个数 MOV B,A ;将最小值赋值给B LP2: INC R0 DJNZ R2,LP MOV 60H,B RET MAX: MOV R0,#30H MOV R2,#10 LP: MOV A,@R0 CJNE A,B,LP1 ;与B比较,B初始值无所谓 LP1: JC LP2 ;如果A MOV B,A ;将最大值赋值给B LP2: INC R0 DJNZ R2,LP MOV 60H,B RET
宣州区15626434586: 汇编语言源代码注释的格式是怎样的 - ?
谷馥凯韦: 以(1)半角的分号开头的行 或者(2)代码行中分号及其后面的内容,都是注释.
宣州区15626434586: 求任意两个整数相加的汇编语言程序,要有注解 - ?
谷馥凯韦: 简单的个位数相加.. 其实这个程序有许多缺点. 因为汇编里面没有直接能接受数值,只能接受键盘输入转化为ASCII码. 当输入的和大于9后就会有问题了.输出的是乱的. 慢慢来.如果想学习的话就去下载一个王爽的《汇编语言》电子版的...