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
你傳上來的程序太少了