简单程序设计实验

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

posted on 2008-11-09 12:40  光影  阅读(194)  评论(0编辑  收藏  举报

导航