哪位能帮我做个汇编代码啊,编写一个程序:输入年、月、日,输出星期几

作者&投稿:星底 (若有异议请与网页底部的电邮联系)
用汇编编程实现根据用户输入的星期几数字代号在屏幕上显示星期几英文名称的功能~

题意估计是叫用定址表和dos中断来做 我先写了
编译通过 运行正确 还有改进的地方请各位拍砖
data segment
table dw t1,t2,t3,t4,t5,t6,t7 ;定址表
t1 db 'Monday$'
t2 db 'Tuesday$'
t3 db 'Wednesday$'
t4 db 'Thursday$'
t5 db 'Friday$'
t6 db 'Saturday$'
t7 db 'Sunday$'
data ends
assume ds:data,cs:code
code segment
start:
mov ax,data
mov ds,ax
mov ah,08h ;调用中断输入数字1-7
int 21h
sub al,30h ;转ascii码为数字
dec al ;减去1,因为如果输入1,实际上定址表第一项
shl al,1 ;乘以2,配合定址
xor ah,ah ;清空ah
mov bx,ax
mov dx,[bx] ;把输出字符串首地址传给dx
mov ah,09h
int 21h
mov ax,4c00h
int 21h
code ends
end start

#include <stdio.h>
void main ()
{
int y,m,d,c,s,w;
printf("请输入8位年月日,以空格隔开:");
scanf("%d%d%d",&y,&m,&d);
if (m==1) c=d;
else if (m==2) c=31+d;
else if (m==3) c=31+28+d;
else if (m==4) c=31+28+31+d;
else if (m==5) c=31+28+31+30+d;
else if (m==6) c=31+28+31+30+31+d;
else if (m==7) c=31+28+31+30+31+30+d;
else if (m==8) c=31+28+31+30+31+30+31+d;
else if (m==9) c=31+28+31+30+31+30+31+31+d;
else if (m==10) c=31+28+31+30+31+30+31+31+30+d;
else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;
else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;
if (m>2)

else if (y%4==0) c=c+1;}
s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;
w=s%7;
switch (w)
{
case 0: printf("星期日");break;
case 1: printf("星期一");break;
case 2: printf("星期二");break;
case 3: printf("星期三");break;
case 4: printf("星期四");break;
case 5: printf("星期五");break;
case 6: printf("星期六");break;
printf("
");
}
}

光标操作:
1.置显示模式:ax=3/int 10h
2.置显示页号:ax=500h/int 10h
3.置光标位置:mov ah=2/mov bh,0/mov dh=行号(0-24)/mov dl=列号(0-79)/int 10h
输出星期几的技巧:
把英文通过添加空格,调整成等长,把DX指向串首,加上S/7的余数*串长;
提示是否要查询下一日期(Yes/No)?
不要mov ah,1/int 21h/cmp al,'Y'/cmp al,'y'/cmp al,'N'/cmp al,'n'
上面合并成一句:mov ah,0/int 16/cmp ah,15h(Y,y)或31h(N,n)

要求有点高~光标操作我还没怎么看~能力达到不了~

dididu能告诉我一个算法么?我想不出来算法


哪位能帮我做个汇编代码啊,编写一个程序:输入年、月、日,输出星期几...
1.置显示模式:ax=3\/int 10h 2.置显示页号:ax=500h\/int 10h 3.置光标位置:mov ah=2\/mov bh,0\/mov dh=行号(0-24)\/mov dl=列号(0-79)\/int 10h 输出星期几的技巧:把英文通过添加空格,调整成等长,把DX指向串首,加上S\/7的余数*串长;提示是否要查询下一日期(Yes\/No)?不要mov ah,...

如何编写汇编代码,实现自定位获取当前EIP
mov ebx,0x4AAAAA ;设置指向数据指针mov dword ptr ds:[ebx],0xC324048B ;写入数据call ebx ;执行写入的数据004AAAAA 8B0424 mov eax,dword ptr ss:[esp] ;保存esp(这里esp=eip)004AAAAD C3 retn ;返回我的能力有限,不知是不是你需要的答案,祝你学习愉快!

哪位高手能不能帮我用汇编语言编写一个程序,就是表示出斐波那契数列的前...
INT 21H ;参数: (AX)=DWORD型低16位数据 ; (DX)=DWORD型高16位数据

求一个用汇编语言编写一个8051单片机的时钟程序(急急急啊)
DIS_BUF: DS 8 BUF_HOUR_H EQU DIS_BUF ; 小时十位 BUF_HOUR_L EQU DIS_BUF+1 ; 小时个位 BUF_MIN_H EQU DIS_BUF+3 ; 分十位 BUF_MIN_L EQU DIS_BUF+4 ; 分个位 BUF_SEC_H EQU DIS_BUF+6 ; 秒十位 BUF_SEC_L EQU DIS_BUF+7 ; 秒个位 RSEG STACK_SEG STACK: ...

求汇编语言代码!在一个字符串中查找某个字符第一次出现的位置_百度知 ...
表示第1个元素匹配 ; 当返回n-1时,表示第n个元素匹配 ; 当返回 -1 时,表示未找到 FIND ENDP ;=== ; 将要显示的有符号数置于 ax 中 DISPAXS PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH ...

各位大哥帮小弟做个汇编小程序拉,拜托拉,最好有流程图..
DSEG SEGMENT msgi db "please input a string:$";显示信息,提示输入一串字符 buf db 100,0,100 dup (?);输入字符串缓冲区 digit db 100 dup (?);数字字符缓冲区 leter db 100 dup (?);字母字符缓冲区 other db 100 dup (?);其它字符缓冲区 dn db ?;数字字符个数 ln db ?;字母字符...

求帮忙编一段 汇编语言,基于51单片机的密码锁,要求在下面。真心求帮忙啊...
;1.初始状态数码管全显示0,然后按键盘输入4个数字,输入完成后按键盘的 ;“F”键,将输入的4为密码与原始密码1234比较,如果正确相同则P0.0口接的继电器 ;工作灯亮。如果错误不相同,则恢复初始状态全显示0.;2.输入过程中,led会逐位‘-’,直到密码输入完成 ;3.密码正确以后,led显示open ;4...

汇编如何只改一个字节中的一位?
1、在汇编中,可以使用OR指令来将一个字节的特定位设置为1,使用AND指令将一个字节的特定位设置为0。具体步骤如下:使用AND指令将要修改的字节中的特定位设置为0,可以通过与一个具有相应位为0的掩码进行按位与来现。例如,要将字节中的第2位设置0,可以使用以下汇编代码:and al, 0xFD ; 与掩码...

哪位好心人帮我解释一下下面一段汇编代码,谢谢啦。
adc dx,1234h ; 把12344998h的高四位1234h与dx寄存器里的8234h以及刚才的进位1相加,结果是 9469h,CF为0,即不需要进位 sub ax,4491h ;把之前ax寄存器里的相加的结果1EEH与4491h相减,结果是BD5DH,CF为1,即需 要借位 sub dx,8000h ;把之前dx寄存器里的相加的结果9469h与8000h以及刚才的...

求解释一个汇编程序
MOV BL,AL ;再送到BL中,BL中也是3E,主要是后面要用,先保存一下 MOV DL,AL ;再送到DL中,DL中也是3E MOV CL,4 ;设置CL为4,为下面的SHR做准备,表示右移4位 SHR DL,CL ;SHR(shift right)右移,CL中存有右移的次数,4次 CMP DL,9 ;右移之后和9比较,cmp(...

盐田区18276244007: 求汇编高手帮忙编写一段程序 -
依吉丽珠: 这回完全测试通过了, 除了代码比较冗余.如果看不懂可以在MSN找我. feng.gzh@hotmail.com---------------------------------------------------------------------- .model small .datadata1 db 6 dup(0) ;多的一位是符号位,其中保存正号或者负号的ascii...

盐田区18276244007: 用汇编语言编写一个程序 -
依吉丽珠: 如下即可:DATAS SEGMENTTIPS DB 10, 13, 'Please input a number (1~8): $'CRLF DB 10, 13, 36 DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX, DATASMOV DS, AX LOP:LEA DX, TIPSMOV...

盐田区18276244007: 谁能给写个汇编程序源码?最最简单那种
依吉丽珠: .MODEL SMALL .CODE .STARTUP MOV DL,4H OR DL,30H MOV AH,02H INT 21H .EXIT END ;最基础的程序,在屏幕上显示4

盐田区18276244007: 帮忙写一个简单的汇编程序 -
依吉丽珠: DSEG SEGMENT table DB 100 DUP(1)A DB 0B DB 0C DB 0 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;代码添加处;>>...

盐田区18276244007: 请厉害的人士帮我用汇编语言编个程序
依吉丽珠: .MODEL SMALL .386 .DATA X BYTE 7H Y BYTE 6H Z BYTE 9H .CODE .STARTUP MOV AL,X MOV BL,Y MOV CL,Z CMP AL,BL ;X和Y比较 JA NEXT CMP BL,CL ;Y大于X时,让Y和Z比较 JA SET1 MOV DL,CL JMP PRINT NEXT: CMP AL,CL ;当X大于Y时,让X和Z比较 JA SET2 MOV DL,CL JMP PRINT SET1: MOV DL,BL JMP PRINT SET2: MOV DL,AL PRINT: MOV AH,02H OR DL,30H INT 21H .EXIT END

盐田区18276244007: 帮忙写一个单片机汇编程序,用中断,只要程序代码就行 -
依吉丽珠: ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 SETB...

盐田区18276244007: 帮我用汇编语言编个程序.
依吉丽珠: proc max ; 入口参数: SI为数据首地址,CX为个数 push si ; 出口参数: AX为最大值,BX为其地址 push cx xor ax,ax mov bx,si mov dx,ax std next1: lodsw cmp ax,dx jc nl mov dx,ax mov bx,si nl: loop next1 mov ax,dx pop cx pop si ret endp

盐田区18276244007: 让能帮我用汇编语言写一个“十进制转二进制”的程序啊,最好把代码附上,急用啊,大神们帮个忙 -
依吉丽珠: 写一个“十进制转二进制”的程序,--这程序,不用写.--无论什么进制的数字,存入到计算机里面,自动就都是二进制了.--不用特意转为二进制.

盐田区18276244007: 初学者求高手帮忙写两个简单的汇编程序,谢谢啦~ -
依吉丽珠: 第一个问题比较简单:DATA SEGMENT B1 DB 0FEHX DB ?Y DB ? DATA ENDS CODE SEGMENTASSUME DS:DATA,CS:CODE START: MOV AX,DATAMOV DS,AXMOV BL,B1MOV AL,BLAND AL,0FHMOV X,ALAND BL,0F0H...

盐田区18276244007: 汇编语言程序代码
依吉丽珠: DATAS SEGMENT buf db 100 dup('$') cuf db 0ah,0dh,?,20h,?,20h,?,'$' DATAS ENDS STACKS SEGMENT dw 10 dup(0) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网