之前汇编学的不是很好。乘这次微机接口把汇编语言算是补上来了。
下面是这段时间的相对于微机接口中使用的汇编语言的笔记。
PTR
在没有寄存器名存在的情况下,用操作符“X ptr”指明内存单元的长度,X在汇编指令中可以为word 或者byte。
例如:
mov word ptr ds:[0],1
inc word ptr [bx]
move byte ptr ds:[0],1
inc byte ptr [bx]
在没有寄存器参与的内存单元访问指令中,必须要显性地告诉CPU所要访问的单元是字单元,还是字节单元。
XLAT
XLAT为查表命令,其操作为[BX]+[AL]---->AL
MOV
赋值语句:MOV dx,key ; key 为变量
OUT
一般用于写端口
MOV DX,PA ; PA为端口
OUT DX,AL ; AL为特定的命令如 8255 初始化
IN
一般用于写CPU
IN AL,DX; 端口对应的值不能直接写在AL中,需要先MOV进DX然后在IN进AL
OFFSET
获取偏移地址
MOV DX,OFFSET TAB ;TAB为数组,获取TAB的偏移地址,这里就是首地址
SEG
获取段地址
MOV DX,SEG INSTR ; 这里INSTR为中断程序,获取中断程序的段地址
lea
将一个近地址指针写入到指定的寄存器。格式: LEA reg16,mem16 其中reg16必须是一个16位通用寄存器,mem16必须是一个存储器,执行这个指令后,就将mem16所指的16位偏移地址传送reg16中。 比如: LEA AX,BUF 就是将存储器中BUF所指的地址传送给AX.
区别MOV传送指令:
MOV传送的是地址所指的内容,而LEA只是地址。
关于几个常用DOS调用:
DOS调用先MOV进AH,即先存入要执行的命令,然后INT 21H 即执行命令
mov ah,4ch 退出程序
eg; mov ah,4ch
int 21h
mov ah,25h
写中断
mov ah,35h
读中断
mov ah,02h
写dl ; 常用于crt
时间: 2024-10-14 15:20:17