内蒙古工业大学微型计算机原理和应用汇编程序实验答案.doc
文本预览下载声明
内蒙古工业大学???
?微型计算机原理及应用实验
参考汇编程序
?
实验01A
将FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器
程序如下:
CODE SEGMENT
ASSUME CS:CODE
START PROC FAR
STT:PUSH DS
????SUB AX,AX
????PUSH AX
;==============================
????MOV AX,0FFFFH
????MOV BX,AX
????MOV CX,AX
????MOV DX,AX
????MOV SI,AX
????MOV DI,AX
????MOV BP,AX
;==============================
????RET
START ENDP
CODE ENDS
END STT
?
?
实验01B
将FFH送到内存1000H,1001H,1002H,1003H,1004H单元中
程序如下:
DATA SEGMENT
ORG 1000H
H1 DB 5 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
????SUB AX,AX
????PUSH AX
;==============================
????MOV AL,0FFH
????MOV DI,1000H
????MOV CX,5????;循环5次
LP1:MOV [DI],AL???;FF放入1000H-1004H中
????INC DI
????DEC CX
????JNZ LP1
;==============================
????RET
START ENDP
CODE ENDS
END STT
?
?
实验02A
编写?一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结?果放在两数据之后,利用DEBUG调试程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=?
程序如下:
DATA SEGMENT
ORG 1000H
H1 DB 10 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
????SUB AX,AX
PUSH AX
Mov??ax,dseg
Mov???ds,ax
;==============================
MOV SI,1000H
;不带最高位进位的全加器
????MOV DI,1003H
????MOV BX,1006H
????MOV CX,3
????CLC
AA: MOV AL,[SI]
????ADC AL,[DI]
????MOV [BX],AL
PUSHF
;保护FR,这里其实没有必要,因为INC不会产生进位
????INC SI
????INC DI
????INC BX
????POPF
????LOOP AA
?
????MOV DL,0????????;最高位进位
????ADC DL,0
????MOV DI,1009H
????MOV [DI],DL
;==============================
????RET
START ENDP
CODE ENDS
END STT
?
?
实验02B
用串传送指令把A程序的数据块(被加数、加数、和)偏移地址1000H开始的区域传递到同一数据段的偏移地址为1010H开始的区域,并利用DEBUG查看运行结果
程序如下:
DATA SEGMENT
ORG 1000H
H1 DB 20 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
????SUB AX,AX
????PUSH AX
;==============================
????MOV AX,DS??;使ES段地址与DS相同
????MOV ES,AX
?
MOV SI,1000H
;不带最高位进位的全加器
????MOV DI,1003H
????MOV BX,1006H
????MOV CX,3
????CLC
AA: MOV AL,[SI]
????ADC AL,[DI]
????MOV [BX],AL
PUSHF
;保护FR,这里其实没有必要,因为INC不会产生进位
????INC SI
????INC DI
????INC BX
????POPF
???
显示全部