当前位置:编程学习 > 汇编语言 >>

汇编语言中,解释每一句

STACK SEGMENT STA DW 100 DUP(?) TOP EQU LENGTH STA STACK ENDS ;这里以上建立的段又用不到 CODE SGMENT ASSUME CS:CODE,SS:STACK START: MOV AX,STACK MOV SS,AX MOV AX ,TOP ;这里建堆栈指针也用不到吧 MOV SP,AX MOV AH,1 INT 21H MOV BL,AL MOV AH,1 INT 21H CMP BL,AL JG LA ;这里什么意思,哪来的LA MOV AL ,BL LA: MOV DL,AL MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
补充:改为CMP AL BL
答案:LEA  SI,DATA1  //将data1作为立即数加载到SI里面
LEA  BX,DATA2
MOV  CX,64H  //CX=0x64
NEXT: MOV  AL,[SI] //将SI里面的内容传入AL里
MOV  [BX],AL  //将AL的值传入DATA2为地址的内存中
INC  SI //data1 加1
INC  BX //data2 加1
LOOP NEXT //循环,跳到next
HLT 

加个判断条件就行了,循环15就OK了!满意否?
其他:输入两个符号,输出其中(ASCII码)最大的。

堆栈段总是要用到的。虽然不是很明显。
在INT 21H里面,就会用到堆栈。

如果你不设定堆栈段,默认就是用CS段当做堆栈段。

LA,是自己定义的标号,一般就是转移指令的目标地址。 MOV  AL,0
;AL清零,可略
LEA  SI,DATA1
;初始化SI
LEA  BX,DATA2
;初始化SI
MOV  CX,64H
;设置传送数据长度
NEXT: MOV  AL,[SI]
;中转
MOV  [BX],AL
;传送到目标区
INC  SI
INC  BX
LOOP NEXT
HLT 
-----------------------------
MOV DS,SEG DATA1
LEA SI,DATA1
MOV ES,SEG DATA2
LEA DI,DATA2
MOV CX,10H
REP MOVSB 啊啊啊 LA就是一个自定义的一个段的名字 ,就是说当AL 大于BL时候跳转到LA段。
希望你能理解。 

上一个:汇编语言问题
下一个:汇编语言

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,