简单程序设计实验

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

转载于:https://www.cnblogs.com/zyx121322/archive/2008/11/09/1330009.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值