微机原理程序及试题
实验部分:
(一)汇编语言编程及调试1
DATA SEGMENT
X DW 2
Y DW 3
Z DW ?
DATA ENDS
CODE SEGMENT 'CODE'
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,X
MOV DX,Y
ADD AX,DX
MOV Z,AX
INT 3
MOV AH,4CH
INT 21H
CODE ENDS
END START
(二)实验程序 8255AIBO.ASM
PORTA=300H
PORTB=301H
PORTC=302H
CONTROL=303H
CG SEGMENT 'CODE'
ASSUME CS:CG
BEGIN: MOV DX,CONTROL
MOV AL,90H
OUT DX,AL
MOV AX,0FFH
MOV DX,PORTB
OUT DX,AX
LP: MOV DX,PORTA
IN AL,DX
MOV DX,PORTB
OUT DX,AL
JMP LP
CG ENDS
END BEGIN
(三) 实验程序8253key1.ASM
CODE SEGMENT 'code'
ASSUME CS:CODE
START: MOV DX,307H
MOV AL
OUT DX,AL
MOV DX,305H
MOV AL,0E8H
OUT DX,AL
MOV AL,03H
OUT DX,AL
MOV DX,307H
MOV AL
OUT DX,AL
MOV DX,306H
MOV AL,0E8H
OUT DX,AL
MOV AL,03H
OUT DX,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
例【3-4】 MOV AL,DS:[2345H]是偏移地址为16位的直接寻址的指令,指令中直接给出了偏移地址,EA=2345H,机器码是:A04523H,其中,操作码是A0H,紧接着的是偏移地址。
例【3-5】 假定在数据段DS有双字变量定义为:
VAR DD
其中VAR是变量名,在经过汇编与连接生成可执行的程序在执行时,它有实际的物理地址,由段寄存器DS与偏移地址EA组成。在执行指令MOV EAX,VAR时,其功能是根据变量名VAR的DS和EA,从数据段内偏移地址为EA的内存单元,连续读取4个字节数送给EAX,即(EAX)。
例【3-10】
MOV AL,[EDX+EBP*2] ;EDX是基址寄存器,访问DS段
MOV EAX,[EBP+ECX*8] ;EBP是基址寄存器,访问SS段
MOV EAX,[EBX][EDI] ;EBX是基址寄存器,访问DS段
MOV EAX,[ESP][EBP] ;ESP是基址寄存器,访问SS段
例【3-23】
data segment ;定义数据段
tab db ’0123456789’ ;单引号内汇编后,生成数
;0~9对应的ASCII码
data ends ;数据段结束
┇
mov bx,offset tab ;变量名tab的偏移地址传
;送给bx,指向表的首地址
mov al,4 ;表tab中第5项的偏移量4→al
xlat ;(tab+4)=34h→al
┇
例【3-25】 POP BX, 假定在上例的基础上执行POP BX。
假定执行前