求问下该汇编程序的各个意思呀,解释下这个汇编程序

作者&投稿:宁杰 (若有异议请与网页底部的电邮联系)
解释下面一个汇编程序每一行代码的意思功能.~

DATAS SEGMENT ;定义数据段
STRING DB 'Hello World!',13,10,'$' ;定义一个STRING字符串变量,初始值为Hello World!
' 13,10'表示回车换行 $为字符串结束标志
DATAS ENDS ;数据段结束

CODES SEGMENT ;代码段开始
ASSUME CS:CODES,DS:DATAS ;假定各段使用的段寄存器,这句话是告诉 编译器的编译器在编译时遇见DATAS中的变量就把它会变成‘DS:变量’的形式
START: ;标号,标号简单的来说,就是在程序中做个标记,以便在编译器 的其他地方找到它所代表的地址!
MOV AX,DATAS
MOV DS,AX ;将DATAS的地址写入DS中,MOV指令不能将DATAS的地址直接写入DS,只能通过寄存器将其写入

LEA DX,STRING ;将字符串地址送到DX中
MOV AH,9
INT 21H ;调用21H中断的9号动能。中断简单的讲 可以认为它是一个函数,只不过它没有函数名 只有数字代号而已 如上面的21H 中断更函数一样,也具有参数 一般的来说 他有两种参数,一个是功能参数,他决定了本次中断调用时的功能 功能参数一般需放置在AH中,如上面的9和下面的4CH,他们的功能分别是显示字符串和返回DOS操作系统,另一个就是我们常规意义上的参数,如上面的9号调用需要的参数是 字符串的地址,对于中断来说,不同的中断调用,他所需要的参数类型以及参数所要放置的寄存器是不同的,这往往需要记忆,
MOV AH,4CH
INT 21H ;这两句是调用21H中断的4C功能。返回DOS操作系统!!
CODES ENDS ;代码段结束
END START ;指明程序的入口地址,如同高级语言中的MAIN();

罗云彬的《WIN32汇编程序设计》我看过相当的经典
不过上面说的都是基于NT内核的API,WINDOWS VISTA 已经推出很久了
它的API有很多的变动,可能有些东西到了VISTA 上就不能用了!用它来入门还是相当不错的

VISTA最终是要取代XP/2000的!!!!学完了NT又要学VISTA
惨呀!!!而且VISTA的API微软好象还舍不得透露!!!不过迫于反垄断的压力,好象又公布了少许


不过没办法 还是要学,谁叫我们是低级程序员呢?做不了操作系统 做不了编译器 做不了图形编码!只会调用API 混口饭自然要看别人的眼色了!!!!!!!

1、c口高四位和低四位的输入输出定义不是根据同组的A口或者B口决定的。因为这里没有用到C口,所以你随便设置为0
2、MOV DL,0FFH
MOV AH,06H
INT 21H
是DOS中断服务功能号为06H---直接控制台I/O服务。当DL=0FFH时候,是从标准输入(键盘)获得用户按键(不等待),当DL=字符ASCII码时候向标准输出(屏幕)输出

ORG 0000H; 开始程序地址
LJMP START;跳到start执行
ORG 001BH
START:
MOV A,#0FEH;A=11111110B
LOOP: RL A;左移A中0的位置
MOV P2,A;P2口输出
LCALL LOP;调用LOP
LJMP LOOP;循环
LOP:MOV IE,#00H;不允许中断
MOV TMOD,#10H;T1中断方式1
MOV TL1,#0DCH;中断初值低八位
MOV TH1,#0BH;中断初值高八位(计时62500us)
MOV R2,#8;
SETB TR1;开启中断计时
LP:JNB TF1,$;等待计时结束(标志位会为1)
MOV TL1,#0DCH;重新装入初值
MOV TH1,#0BH;
CLR TF1;清除标志位
DJNZ R2,LP;循环8次(8*62500=500000us=500ms)
CLR TR1;停止定时中断
RET;返回
END


我想问一下,用汇编写程序,在理论上是否能达到其他任何语言能达到的效...
理论上不仅可以达到,而且会超越。像高级的编程人员,为了程序的特殊功能,有时得在某些地方专门采用汇编语言来写,就是因为有些编程软件没法做到软件要求的功能,而汇编却可以。

问几个关于汇编程序的问题
HERE SJMP HERE 这句无限循环 应该是用来等待中断的 end的话程序会被终止,中断程序也不会再被执行了 LED那个你需要知道LED的结构很简单,网上很容易找 硬件地址的分配是看你接的那几根线了,原则上只要不重复应该都可以 有一些 是电路直接与单片机I\/0口连接,而没有经过AD转换,请问什么“情况下...

汇编程序的问题
MOV R0,#22H MOV A,21H LOOP: mov R4,A CLR C ;c要清零 SUBB A,@R0 JNC REL1 MOV A,@R0 LJMP REL2 REL1:MOV A,R4;这边你忘记刚才的A已经被减掉了,所以得重新赋值 REL2:INC R0 CJNE R0,#51H,LOOP MOV R1,A SJMP END ...

汇编程序问题!!!望解答!
(1)程序段执行后,BUF2开始的6个字节存储单元的内容是什么?00H, 01H, 02H, 03H, 04H, 05H。(2)程序功能不变,AND AL,0FH指令可否用SUB AL,30H指令替代。可以。两问分别是为什么?运行结果就是这样。

51单片机汇编程序的几个问题。。。
上电复位后PSW要被清零的,就是00组合,他就是第0组工作寄存器的识别信号,明白?为什么要有好几组工作寄存器呢?那是为了程序调用的,发生子程序调用,保护主程序的工作状态,你要给子程序重新设一组工作寄存器,当然,你要是用不到工作寄存器,不切换也行,怎么切换呢?这你不会不知道了吧,给psw...

我写了一个汇编程序问怎么显示?
显示的话,把数据写在 B8000到BFFFF单元之间即可显示。显示是作为字符考虑了,字符转换为ASCII码(16进制),储存时:低8位放字符的ASCII码(16进制),高8位放颜色信息。颜色信息:BL R G B I R G B (也是8位,RGB位同时取0为黑色,同时取1为白色)闪动 背景 高亮 前景 R: 红色 ...

51单片机汇编程序的几个问题。。。
上电复位后PSW要被清零的,就是00组合,他就是第0组工作寄存器的识别信号,明白?为什么要有好几组工作寄存器呢?那是为了程序调用的,发生子程序调用,保护主程序的工作状态,你要给子程序重新设一组工作寄存器,当然,你要是用不到工作寄存器,不切换也行,怎么切换呢?这你不会不知道了吧,给psw...

汇编语言问题谁帮我解释下这个程序是做什么的啊具体点一句句解释下啊...
jnc next ;非数字则跳 inc dl ;计数器加1 next:inc bx ;指向下一个字符 jmp aa ;循环 next1:mov result,dl ;把计数器结果存入变量result mov ah,4ch int 21h ;程序结束 code ends end start

单片机汇编程序的问题
程序中是这样的,让R7达到最大值#0FFH,第一次按,R7加一,就变成了0(进位自动丢弃),再把R7赋给A,这样就实现了!!至于判断是否显示到最后一位,是这样的:你不停的按键,按了九下,数码管显示九,你再按,他该显示什么?该显示0了吧?如果想显示零,必须使movc a,@a+dptr重新指回0F9H...

求个问题 关于汇编的 下面程序哪里出错了 望指点
把CODE:后面的冒号去掉 DATA SEGMENT DA1 DB 92H DA2 DB 87H DA3 DB 39H BUF DB ?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEG:MOV AX,DATA MOV DS,AX MOV AL,DA1 CMP AL,DA2 JGE AV1 XCHG AL,DA2 AV1:CMP AL,DA3 JGE AV2 XCHG AL,DA3 AV2:MOV BUF,AL MOV AH,4CH...

德安县13562875272: 求问下该汇编程序的各个意思呀,解释下这个汇编程序 -
溥咳安宫: ORG 0000H; 开始程序地址 LJMP START;跳到start执行 ORG 001BH START: MOV A,#0FEH;A=11111110B LOOP: RL A;左移A中0的位置 MOV P2,A;P2口输出 LCALL LOP;调用LOP LJMP LOOP;循环 LOP:MOV IE,#00H;不允许中断 ...

德安县13562875272: 请问这个汇编程序是什么意思,最好具体点....
溥咳安宫: LDR R8, [R10] ;R10保存的是一个地址,LDR就是表示把这个地址里面的内容装载到r8 LDRNE R2, [R5,#960]!;将r5+960-->r2,同时,r5的值也变成r5+960 STR R2, [R9,#consta-struc];将寄存器r2的值装入内存r9+consta-struc的位置 STRB ...

德安县13562875272: 求这段汇编程序的详细解释
溥咳安宫: DSEG SEGMENT ;定义数据段 n equ 5 ;n=5 buf db n dup(?) ;给buf的预留n个字节 DSEG ENDS CSEG SEGMENT ;定义代码段 assume cs:CSEG, ds:DSEG MAIN PROC FAR ;主程序入口 mov ax, dseg mov ds, ax ;将数据段地址送DX...

德安县13562875272: 请解释一个汇编的程序? -
溥咳安宫: ;---------------------------------------------------;;后面可能是想将输入的数字用十进制显示出来;不过没成功 p macro buf ;定义一个宏buf lea dx,buf mov ah,9 ;21h号中断的09号中断 int 21h ;显示buf处的字符串 endm ;----------------------------------------------...

德安县13562875272: 汇编程序解释 -
溥咳安宫: code segment ;段定义开始 assume cs:code ;code段指定给CS.CS段为代码段.start: ;程序开始执行的位置(由end start指定) begin:mov ah,1 ;INT 21H的功能号.该功能号为: 键盘输入功能.int 21h ;键盘输入 cmp al,'a' ;AL=键盘输入的符号...

德安县13562875272: 有没有大神解释下这段汇编程序的意思啊 -
溥咳安宫: 这段汇编程序的功能,是将内存中D1位置开始的4个字节单元中的内容,按逆序存放到内存中D2位置开始的4个字节单元中.因D1开始的4个字节依次为12H、34H、56H、78H(数字后面跟随的“H”表示教字为16进制),在这段程序运行后,D2位置开始的4个字节依次为78H、56H、34H、12H.

德安县13562875272: 这段汇编程序什么意思呀? -
溥咳安宫: MOV AX,0001H ~AX<=1 MOV BX,0002H ~BX<=2 PUSH AX ~1进栈 PUSH BX ~2进栈 POP CX ~2出栈=>CX POP BX ~1出栈=>BX 所以 BX=1

德安县13562875272: 求解释某个汇编程序的详细意思及实现过程谢谢 越详细越好 谢谢 -
溥咳安宫: ;1:字符串的闪烁:welcome to masm! ;2:给字符串附上颜色:jisuanji gongcheng 绿色,09ji3w 黄色,tanmingxiao 紫色;3:字符串向右和向下移动:I have a dream!向右移动, Never give up !向下移动;4:字符串在三种颜色中闪烁:Thank you!

德安县13562875272: 刚学汇编 求解释下面程序各步骤 所代表含义 MOV AH,01101100B MOV -
溥咳安宫: 下面程序各步骤 所代表含义:MOV AH,01101100B;将二进制数01101100B送入寄存器AH,(AH)=6CH MOV DL,'M';将字符"M"的ASCII码送入寄存器DL,(DL)=4DH MOV CX,7*2;将表达式7*2的运算结果送入寄存器CX,(CX)=14 MOV EAX,0d45678a9H;将十六进制数0d45678a9H送入寄存器EAX,(EAX)=0d45678a9H

德安县13562875272: 汇编新手!求解下面程序什么意思!! -
溥咳安宫: 第1个程序实现的是R1和R0所指向的地址的多字节数据加法,结果存放在R1所指的地址,字节数在R2中.在本例中就是(41H)(40H) + (31H)(30H) = (41H)(40H) 第2个程序实现的是将ACC中的...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网