汇编程序

输出1,2,3,4

;输出1 2 3 4
data segment;
x db 1
data ends
code segment
assume ds:data,cs:code
start:
  mov ax,data;
  mov ds,ax;
  add x,'0';
  mov cx,4;
print:
       mov dl,x;
       mov ah,02h;
       int 21h;
	   add x,1;
	   loop print;
	   mov ax,4c00h;
	   int 21h;返回
	   code ends;
	   end start



输入HELLEO

Data SEGMENT

string DB "HELLO WORLD! $"

data ENDS


CODE SEGMENT


ASSUME CS:code,DS:data

start:

MOV AX,data

MOV DS,AX

MOV DX,OFFSET string

MOV AH,9

INT 21H

MOV AH,4CH

INT 21H

code ENDS


END start


 

 

 润年判断

data segment ;定义数据段

infon db 0dh,0ah,'Please input a year: $'

Y db 0dh,0ah,'This is a leap year! $'

N db 0dh,0ah,'This is not a leap year! $'

w dw 0

buf db 8

db ?

db 8 dup(?)

data ends


stack segment stack

db 200 dup(0)

stack ends


code segment

assume ds:data,ss:stack,cs:code

start:mov ax,data

mov ds,ax


lea dx,infon ;在屏幕上显示提示信息

mov ah,9

int 21h


lea dx,buf ;从键盘输入年份字符串

mov ah,10

int 21h


mov cl, [buf+1]

lea di,buf+2

call datacate

call ifyears

jc a1


lea dx,n

mov ah,9

int 21h

jmp exit

a1: lea dx,y

mov ah,9

int 21h

exit: mov ah,4ch

int 21h




datacate proc near;

push cx; 

dec cx

lea si,buf+2

tt1: inc si

loop tt1

;lea si,cx[di]

pop cx



mov dh,30h

mov bl,10

mov ax,1

l1: push ax

sub byte ptr [si],dh

mul byte ptr [si]

add w,ax

pop ax

mul bl

dec si

loop l1

ret

datacate endp



ifyears proc near

push bx

push cx

push dx

mov ax,w

mov cx,ax

mov dx,0

mov bx,4

div bx

cmp dx,0

jnz lab1

mov ax,cx

mov bx,100

div bx

cmp dx,0

jnz lab2

mov ax,cx

mov bx,400

div bx

cmp dx,0

jz lab2

lab1: clc

jmp lab3

lab2: stc

lab3: pop dx

pop cx

pop bx

ret

ifyears endp

code ends

end start


 

 

 

posted @ 2013-04-11 17:04  剑不飞  阅读(225)  评论(0编辑  收藏  举报