汇编语言
1MC DJNZ R6,$。 2MC DJNZ R7,DEL1。 2MC RET。 2MC 延时时间 : t=1+200[(1+1+2*123)+2]+2 ≈50000us=50ms ( 2)代码转换类程序设计 十六进制数与 ASCII的转换 十六进制整数转换成单字节BCD码整数 * 单字节十六进制数转换成双字节 ASCII码 表 41 十六进制数与 ASCII码之间的关系 十 六
C。 查表输出 LEA SI,DAVLUE XOR AH,AH ADD SI,AX MOV AL,[SI] MOV DX, DAPORT; DAC端口 OUT DX,AL RET DAOUT ENDP 程序设计举例 ( 三 ) 查表波形发生 (续二 ) 微机系统与接口技术 东南大学 13 程序设计举例 —模 块化: 过程 /子程序调用与参数传递 术语 嵌套 递归 可重入 可重定位 参数传递 1
ends data2 segment word var1 dw ? data2 ends datagroup group data1,data2 code segment assume cs:code, ds:datagroup mov ax, datagroup mov ds, ax mov ax, const1 mov var1, ax … mov ax, 4c00h int 21h
23:05 32 ( 2) 组合类型 说明程序连接时的段合并方法 PRIVATE 为私有段,连接时不与其他模块中的同名段合并 PUBLIC 不同模块的同名段连接在一起,形成参与邻接模块所公用的物理段 COMMON 产生一个覆盖段。 与其它具有该类型的同名段拥有同一起始地址,共享相同的存储区。 共享存储区的长度由同名段中最大的段确定 STACK 功能同 PUBLIC,但新形成的段为堆栈段 默认项是
2. 双向分支程序设计举例 【 例 】 设 X存在 30H单元中 , 根据下式 X+2 X0 Y = 100 X=0 求出 Y值 , 将 Y值存入 31H单元。 ∣ X∣ X0 解:根据数据的符号位判别该数的正负 , 若最高位为 0, 再判别该数是否为 0。 程序流程如图 44所示。 参考程序如下: ORG 1000H MOV A, 30H ;取数 JB , NEG;负数 , 转 NEG JZ
DWORD PTR[BX+SI+2] …… 程序执行完标号为 A的指令后: CS=。 IP=。 6 程序 4 DATA SEGMENT STR1 DB ‘HELLO WORLD。 ’ STR2 DB ‘HELLO WOOLD。 ’ COUNT DB 12 FLAG DB。 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, ES: DATA 7
令系统及汇编语言 该指令也可以用于任一寄存器与立即数或别的寄存器及任一内存操作数之间的比较 , 例如: CMP BX, 04FEH CMP DX, DI CMP CX, COUNT[ BP] 该指令还可以用于内存操作数与立即数及任一寄存器中操作数之间的比较。 例如: CMP DATA, 100 CMP COUNT[ SI] , AX CMP POINTER[ DI], BX 第 3章
言程序设计》 冶金工业出版社 第 8章 高级汇编语言技术 局部符号伪指令 汇编程序中提供伪指令 LOCAL,解决标号的多重定义 问题。 伪指令 LOCAL格式: LOCAL 标号表 在每次宏展开时 , 汇编程序对 LOCAL伪指令说明的 标号或变量用唯一的符号 “ ??XXXX”( XXXX表示 0000FFFF的十六进制数 ) 代替。 《 IBM PC 80X86汇编语言程序设计》
2H +1 +2 +3 +4 +5 TABLE 45H 44H AL 44H 41H 40H 36 地址传送指令 LEA (load effective address) 有效地址送寄存器 LDS (load DS with pointer) 地址指针送寄存器和 DS LES (load ES with pointer) 地址 指针送寄存器和 ES LFS (load FS with
右移 1位 LOOP LL ;循环控制 MOV COUNT,BL ; COUNT← 计数器 BL的值 MOV AH,4CH ;返回 DOS INT 21H CODE ENDS END BEGIN 例 : 将正整数 NUM插入到一个从小到大排列好顺序的正整数字节数组序列中。 分析: 假设该数组的首地址和末地址分别为 ARRAY_HEAD、ARRAY_END, 显然在这里需要插入的是一个数 ,