80x86微机课程设计数字显示
Ⅰ 设计80X86汇编语言源程序,实现将键盘输入的两位十进制数据相加,结果输出显示在屏幕上.
可惜没时间,不然肯定写个在实模式跟保护模式都能运行的给你
Ⅱ 微机原理课程设计:通过使用软件延时,编写一个程序,在屏幕上依次显示9、8、7。。。1、0十个数字。。。
CODESEGMENT
ASSUMECS:CODE
START:
MOVCX,3;设外循环3次
@0:
PUSHCX
MOVCX,10;设内循环10次
@1:
MOVAH,2
MOVDX,CX
DECDX;将内循环变量减一后输出
ORDL,30H
INT21H
MOVAX,18;延时18个单位,约等于1秒
CALLDELAY_PROC
LOOP@1
CALLLFCR;换行回车
POPCX
LOOP@0
MOVAH,4CH
INT21H
LFCR:PUSHAX
PUSHDX
MOVAH,2
MOVDL,13
INT21H
MOVDL,10
INT21H
POPDX
POPAX
RET
;===============================================================
DELAY_PROCPROCNEAR;延迟子程式,延迟ax/18秒
PUSHES
PUSHDX
MOVDX,40H
MOVES,DX
MOVDX,ES:[006CH];取系统1/18秒计数
ADDDX,AX;延时x/18
DELAY10:
CMPES:[006CH],DX;时限到了?
JBEDELAY10;没
POPDX
POPES
RET
DELAY_PROCENDP
;============================================================
CODEENDS
ENDSTART
Ⅲ 80x86汇编语言实现输入一个正整数值N后用两栏格式显示从1到N和它们的平
要用到DOS调用INT 21H。
假定N不大于9则只需要输入一个字符即可。另外,为简单计平方是通过查表完成的,表中保存BCD码。以下代码的";"开始启动注释
;DATA
STRING DB 'Input number 0-9:$'
SQUARE DB 00H 01H 04H 09H 16H 25H 36H 49H 64H 81H
;CODE
BEGIN:
MOV AH, 01H; 读入一个字符,返回值在AL中
INT 21H
CMP AL, 31H;与1比较
JLE ERROR
CMP AL, 39H;与9比较
JLE INPUT_OK
ERROR:
MOV AH,09H;准备调用打印功能
MOV DX, OFFSET STRING
INT 21H
JMP BEGIN
INPUT_OK:
XOR CX, CX; 将CX清零,实际上是清除CH,后面用AL中的输入值置CX
SUB AL, 30H; 将字符0-9转换为数值
MOV CL, AL; 设置计数器,准备循环输出
MOV SI, 1; 设置第一个数位置, 原表中的第一个被自动忽略
CONTINUE: ; 这是循环输出的开始标号
MOV AH, 09h; 首先输出1~N之一,从1开始
MOV DL, SI
ADD DL, 30H
INT 21H
MOV DL, 20H; 加一个空格
INT 21H;
MOV BX, OFFSET SQUARE
MOV AL, [BX+SI];从表中取出BCD码, 保存在AL中, BX为基地址偏移,SI为增量
MOV DL, AL; 先处理高位
AND DL, 0F0H
CMP DL, 00H;看BCD高位是否为0
JNE NOT_ZERO
MOV DL, 20H;如果为0用空格代替
INT 21H
JMP LOW_PART
NOT_ZERO:
PUSH CX;保存CX
MOV CL,4
SHR DL, CL;把高位BCD码放在低4位上
ADD DL,30H;转变位字符
POP CX
INT 21H
LOW_PART:
MOV DL, AL; 再次从AL中取出BCD
AND DL, 0FH;仅保留其中的低4位
ADD DL, 30H;转变位字符
INT 21H
MOV DL,20H;再添加一个空格
INT 21H
INC SI; 增加SI跳到下一个BCD码
LOOP CONTINUE
;END
Ⅳ 求微机原理课程设计: 数字时钟:实时显示时间于LED数码管,并可以修改时间
设定程序计数器,产生1Hz的方波。然后由1Hz的方波产生时、分、秒和年、月、日等信号。通过译码器,产生驱动LED的信号,用来显示LED数码管。编写接口程序满足修改时间的要求。
Ⅳ 80X86计算机数字表示
如果你真正明白补码的优势就不会这么问了x.,xb 补码带符号整数和无符号整数可以使用相同的加法逻辑,所以现在几乎没有CPU使用补码以外的格式表示整数
Ⅵ 80x86 汇编语言实验 显示字符串
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
String db 'BeiJing,china,2009$'
Start: push cs
pop ds ;使数据段与代码段同段
lea dx,String
mov ah,9
int 21h
Exit_Proc: mov ah,4ch ;结束内程序
int 21h
Code ENDS
END Start ;编译到此结容束
Ⅶ 怎么设计80X86汇编语言远程序,实现将键盘输入的两十进制数相加,结果输出显示在屏幕上.
DATA1 SEGMENT NUM1 DB ? NUM2 DB ? SUM DB ? DATA1 ENDS COSEG SEGMENT ASSUME CS:COSEG,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX MOV AH,01H ;调用一号键输入功能,输出参量保回持在AL中. INT 21H MOV BL,AL MOV AH,01H ;调用一号键输入功能,输出参量保持在AL中. INT 21H MOV NUM1,BL ;为了方便查看答数据段结果,将输入的第一个数保存在NUM1中 MOV NUM2,AL ;将输入的第2个数保存在NUM2中 ADD BL,AL MOV SUM,BL ;将结果保存在SUM中 MOV AH,4CH INT 21H COSEG ENDS END START
Ⅷ 微机原理与接口技术课程设计之数字显示倒计时器
DATAS SEGMENT
sec db 24 ;倒数的秒数,可以随意更改
osec db 0
startmsg db "Counting down .... press [p] to puase, [c] to continue, [s] to stop",13,10,"$"
timesup db 13,10,"Times up!"
endmsg db 13,10,"Thanks for using, bye~$"
secStr db 6 p ("$")
curpg db 0
ispause db 0
x db 0
y db 0
DATAS ENDS
STACKS SEGMENT
db 64 p(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
push ax
push bx
push cx
push dx
MOV AX,DATAS
MOV DS,AX
lea dx,startmsg
call puts
;读取时间
mov ah,2ch
int 21h
mov osec,dh ;记下秒数
call getxy ;取得游标的位置
;倒数,显示倒数,查键盘。
;倒数的原理就是 osec 和现在秒数的对比得出
timer:
mov ah,2ch
int 21h
mov ah,6 ;检查键盘
mov dl,0ffh
int 21h
cmp al,"s" ;终止程式
jz done
cmp al,"p" ;暂停程式
jz pause
cmp al,"c" ;继续程式
jz continue
cmp ispause,0
jg timer
cmp osec,dh ;检查秒数的变化
jnz interval
jmp timer
interval:
mov osec,dh ;更新秒数
dec sec
call showcountdown ;显示倒数秒数(sec)
cmp sec,0
jg timer
lea dx,timesup
call puts
jmp done
pause:
mov ispause,1
jmp timer
continue:
mov ispause,0
jmp timer
puts:
mov ah,9
int 21h
ret
showcountdown:
call setxy ;保持显示倒数的位置
xor ax,ax
xor dx,dx
mov al,sec
cbw
mov bl,10
div bl
add al,"0"
add ah,"0"
lea bx,secStr
mov byte ptr[bx],al
mov byte ptr [bx+1],ah
mov dx,bx
call puts
ret
;读取游标的位置
getxy:
mov ah,3
int 10h
mov x,dl
mov y,dh
mov curpg,bh
ret
;设置游标的位置
setxy:
mov ah,2
mov bh,curpg
mov dl,x
mov dh,y
int 10h
ret
done:
pop dx
pop cx
pop bx
pop ax
MOV AH,4CH
INT 21H
CODES ENDS
END START
Ⅸ 80x86汇编语言不能正常显示数字
mov ax,b800H
mov ss,ax
mov sp,16
直接将立即数入段寄存器
mov ah,07 '显示属性
mov al,'5' '显示数值
push或pop ax
你传上来的程序太少了