汇编小程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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