微机原理课后例题程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;例4-1

STACKS SEGMENT STACK ;堆栈段

DW 128 DUP(?) ;注意这里只有128个字节STACKS ENDS

DATA SEGMENT

X DB 25

Y DB 32

Z DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA ;初始化DS

MOV DS, AX

MOV AL, X

MUL AL ;求X2

MOV BL, Y

ADD BL, BL ;Y+Y

ADD BL, Y ;Y+Y+Y

SUB AX, BX ;X^2-3Y

SHR AX, 1 ;(X^2-3Y)/ 2

;MOV Z, AX ;结果送Z

CALL SHOW

MOV AH,7 ;暂停

INT 21H

MOV AH, 4CH ;返回操作系统

INT 21H

;内存AX中的数据在屏幕上以十进制形式显示出来

SHOW:

XOR CX,CX

MOV BX,10

NX1:

XOR DX,DX ;余数清零

DIV BX ; AX除以10

OR DX,0E30H ; ASCII码调整

INC CX ; 计数器加1

PUSH DX ; 余数进栈

CMP AX,0

JNZ NX1

NX2: POP DX

MOV AH,2

INT 21H ;显示

LOOP NX2 ; CX不为0循环

RET

CODE ENDS

END START ;汇编结束

;例4-2

DATA SEGMENT

TABLES DB 30H,31H,32H,33H,34H,35H,36H,37H ;建立ASCII表DB 38H,39H,41H,42H,43H,44H,45H,46H

HEX DB 04H ;假定要查的十六进制数为4

ASCI DB ? ;存放查表的结果

DATA ENDS

STACK1 SEGMENT STACK

DW 20H DUP(0) ;建立堆栈段

STACK1 ENDS

COSEG SEGMENT

ASSUME CS:COSEG, DS:DATA, SS:STACK1

BEING: MOV AX, DATA

MOV DS, AX

MOV BX, OFFSET TABLES ;表首地址送BX

MOV AL, HEX ;表内位移量送AL

XLAT ;查表

MOV ASCI,AL ;结果送ASCI

MOV DL, AL

MOV AH, 2 ;调用DOS中断2号功能显示结果

INT 21H

MOV AH,7

INT 21H

MOV AH, 4CH ;返回操作系统

INT 21H

COSEG ENDS

END BEING

;例4-3奇校验程序,ASCII显示

DATA SEGMENT

MSG DB 10,13,'$'

X DB ?

Y DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AH,1 ;读入一个键

INT 21H

MOV X,AL ;存原值

AND AL, 7FH ;最高位置"0"、其他位不变

;同时标志PF反映"1"的个数

JNP NEXT ;个数为奇数,不需处理,转移

OR AL, 80H ;个数为偶数,最高位置"1"、其他位不变NEXT: MOV Y,AL ;奇校验后的值

MOV BL, X

CALL SHOW

MOV BL, Y

CALL SHOW

MOV AH,4CH ;正常结束

INT 21H

;BL中字符的ASCII码显示

SHOW PROC

MOV DX,OFFSET MSG

MOV AH,09H

INT 21H ;回车换行

MOV CX, 8 ;8位

NEXT1: SHL BL,1 ;依次析出高位

MOV DL,30H

ADC DL,0 ;转换得ASCII码

MOV AH,2

INT 21H ;显示之

LOOP NEXT1

MOV DL,'B'

MOV AH,2 ;显示二进制数表示符

INT 21H

RET

SHOW ENDP

CODE ENDS

END START

4-4 DATA SEGMENT

X DB 3 ;假定X=3

Y DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

MOV AL, X

CMP AL, 0 ;X和0比较

JGE BIGER ;X>=0跳转到BIGER

MOV AL, 0FFH ;X<0,-1送Y单元

MOV Y, AL

JMP NEXT ;跳过处理X>=0的程序段BIGER: JE EQUL ;X=0跳转到EQUL

MOV AL, 1 ;X>0,1送Y单元

MOV Y, AL

JMP NEXT ;跳过处理X=0的程序段EQUL: MOV Y, AL ;X=0,0送Y单元

NEXT: XOR AH,AH

MOV AL,Y

CALL SHOW

MOV AH,7 ;暂停

INT 21H

MOV AH, 4CH ;返回操作系统

INT 21H

;内存AX中的数据在屏幕上以十进制形式显示出来

SHOW:

XOR CX,CX

MOV BX,10

NX1:

XOR DX,DX

DIV BX

OR DX,0E30H

INC CX

PUSH DX

CMP AX,0

JNZ NX1

NX2: POP AX

INT 10H

LOOP NX2

RET

CODE ENDS

END START

例4-5求1+2+...+100

DATA SEGMENT

相关文档
最新文档