汇编小程序

  • 格式:docx
  • 大小:20.95 KB
  • 文档页数:16

下载文档原格式

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

---------程序sy3-1:实现从键盘输入一位数字,判断其奇偶性。并在屏幕上输出一个标志,若为奇数,则输出1;否则输出0。

---------如果输入的不是数字,则显示字符串“ERROR”。

DATAS SEGMENT

STRING DB "ERROR$" ;定义字符串

FLAG DB ? ;设置奇偶标志

DATAS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS

START:

MOV AX,DATAS

MOV DS,AX

MOV FLAG,'1' ;给标志位FLAG赋初值

MOV AH,01H

INT 21H ;接收键盘输入一位数

CMP AL,30H

JB ERR

CMP AL,39H

JA ERR

TEST AL,01H ;测试,根据最后一位判断奇偶性

JNZ OUTPUT ;不为0则为奇数

MOV FLAG,'0'

OUTPUT:

MOV DL,FLAG

MOV AH,02H

INT 21H ;输出标志位

JMP EXIT

ERR: ;显示字符串

MOV DX,OFFSET STRING

MOV AH,9

INT 21H

EXIT:

MOV AH,4CH

INT 21H

CODES ENDS

END START

;---------程序sy3-2:根据用户输入的星期几数字代号(0代表星期天),在屏幕上显示相应的英文缩写名。

DATAS SEGMENT

s0 db "Sun$"

S1 DB "Mon$"

S2 DB "Tue$"

S3 DB "Wed$"

S4 DB "Thu$"

S5 DB "Fri$"

S6 DB "Sat$"

ADDR_TABLE DW S0,S1,S2,S3,S4,S5,S6 ;定义地址表

DATAS ENDS

STACKS SEGMENT

;此处输入堆栈段代码

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

MOV AX,DATAS

MOV DS,AX

MOV AH,1

INT 21H ;接受键盘输入

CMP AL,30H

JB EXIT

CMP AL,36H ;不是数字0~6,则退出程序

JA EXIT

SUB AL,30H ;转变为数字

MOV BL,2

MUL BL ;数字乘以2的结果是在地址表中的相应位置的偏移值MOV BX,AX ;将输入的数字转换为地址表中的偏移地址

MOV DX,ADDR_TABLE[BX] ;取地址表中的相应内容(即DX为字符串的偏移地址)MOV AH,9

INT 21H ;显示字符串

EXIT:

MOV AH,4CH

INT 21H

CODES ENDS

END START

;-------------SY4-1.ASM: 该程序计算1~100的和并用十进制的形式在屏幕上显示出来。

code segment

assume cs:code

start:

mov cx,100

mov ax,0

mov bx,1

s:

add ax,bx ;循环累加求和

inc bx

loop s

mov bx,ax ;将显示bx的值

;----------下面程序段的功能是以十进制形式显示BX的内容

MOV SI,10000 ;因为BX〈65536,循环处理5次

MOV CX,5

ROTATE:

MOV AX,BX

MOV DX,0 ;被除数送(DX,AX)

DIV SI ;除数

MOV BX,DX ;余数要作为下一步的被除数

MOV DL,AL

ADD DL,30H

MOV AH,2 ;显示商(即对应位上的数字)

INT 21H

MOV AX,SI

MOV DX,0

MOV DI,10

DIV DI ;把除数除以10后的商作为下一步的除数

MOV SI,AX ;改变除数

LOOP ROTATE

mov ah,4ch

int 21h ;返回DOS

code ends

end start

DATA SEGMENT

STRING1 DB 'Move the cursor Backward.'

STRING2 DB 'Move the cursor backward.'

MESS1 DB 'Mactch.',13,10,'$'

MESS2 DB 'No match!',13,10,'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

MOV SI,-1 ;SI要记录不匹配的位置MOV CX,25

S: INC SI

MOV AL,STRING1[SI]

CMP AL,STRING2[SI] ;循环比较

LOOPZ S

JZ MATCH ;相等则匹配

LEA DX,MESS2

JMP DISP

MATCH:

LEA DX,MESS1

DISP:

MOV AH,9

INT 21H ;显示字符串

MOV AH,4CH

INT 21H

CODE ENDS

END START