简单程序设计实验
1.编写计算的程序
DATA SEGMENT
X DB 29
Y DB 8
Z DB 25
F DW ?
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MAIN PROC FAR
START: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA ;数据段寄存器DS初始化
MOV DS,AX
MOV AL,X ;MOV AL取操作数X
MUL Y ;MUL完成X*Y运算,结果放在AX中
MOV BH,0
MOV Bl,Z
ADD AX,BX ;完成X*Y+Z
SUB AX,500
MOV F,AX ;SUB最后AX送入F中
RET
MAIN ENDP
CODE ENDS
END START
2.实现逻辑电路的功能
;模拟逻辑电路
STACKA SEGMENT STACK
DB 100 DUP (?)
STACKA ENDS
DATA SEGMENT
IN1 DB 00001111B
IN2 DB 10101010B
IN3 DB 11111111B
IN4 DB 11111011B
F DB ?
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MAIN PROC FAR
START: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA;数据段寄存器DS初始化
MOV DS,AX
MOV AL,IN1
NOT AL;求反
MOV AH,IN2
OR AL,AH;或
MOV BL,IN3
AND BL,IN4;与
XOR AL,BL;异或
MOV F,AL;存结果
RET
MAIN ENDP
CODE ENDS
END START
3.编写一个32位无符号数除法的程序
STACKA SEGMENT STACK
DB 100 DUP (?)
STACKA ENDS
DATA SEGMENT
NUM1 DD 2A8B7654H
NUM2 DW 5ABCH
NUM3 DW ?
NUM4 DW ?
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MANUM PROC FAR
START: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA;数据段寄存器DS初始化
MOV DS,AX
MOV AX,WORD PTR NUM1;取被除数的低位
MOV DX,WORD PTR NUM1+2;取被除数的高位
DIV NUM2;除以除数
MOV NUM3,AX;存商
MOV NUM4,DX;存余数
RET
MANUM ENDP
CODE ENDS
END START
4.编写一个"拆字"程序
STACKA SEGMENT STACK
DB 100 DUP (?)
STACKA ENDS
DATA SEGMENT
ARY DB 12H
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
MANUM PROC FAR
START: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA;数据段寄存器DS初始化
MOV DS,AX
MOV SI,OFFSET ARY;指针初始化
MOV AH,0
MOV AL,[SI];取被除数
MOV BL,10H;除数
DIV BL
MOV [SI+1],AL;取到高位,相当于右移四位
MOV AL,[SI]
AND AL,0FH;取低位
MOV [SI+2],AL
RET
MANUM ENDP
CODE ENDS
END START