1樓:匿名使用者
org 0000h ; 數碼管共陰
ajmp main
org 000bh
t0ms equ not 50000 ; 100 ms 晶振 6.000 mhz
pjsbz equ 20h
pjsbzy equ 21h
pst0: mov tl0, #low t0ms ; t0 中斷
mov th0, #high t0ms
setb pjsbz ; 100 ms 標誌
djnz r6, pst02
mov r6, #100 ; 100 ms * 100 = 10 s
setb pjsbzy ; 10 s 標誌
pst02: reti
main: mov tmod, #01h
mov ie, #82h ; 開 t0 中斷
mov sp, #30h
mov tl0, #low t0ms ; to 100ms 中斷 計時 0
mov th0, #high t0ms
setb tr0
mov r6, #10 ; 計時初值
mov dptr,#tab
main1: mov r0, #0
main2: jnb pjsbzy, $ ; 10 s
clr pjsbzy
mov a, r0
movc a,@a+dptr
mov sbuf, a
inc r0
cjne r0, #0ah, main2
ajmp main1
tab: db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh
db 77h, 7ch, 39h, 5eh, 79h, 71hend
2樓:匿名使用者
先採後會,告訴我你郵箱
組合語言程式設計 編寫一程式,使得計算機螢幕上每隔五秒顯示一行字元"good morning",按任意
3樓:匿名使用者
1.除錯通過 ,用masm編譯,其實邏輯很簡單,用中斷21h的9號中斷服務程式顯示字串good morning
(注意,字串應該以$結束),**如下:
mov dx,offset content
mov ah,9
int 21h
2。然後呼叫延時子程式延時5s,我的延時不一定精確,只是象徵性的延時,你可以根據延時時間具體計算,很容易的,延時子程式在delay,你只需改變bx,cx的值即可改變延時時間
3.最後用中斷16h的1號中斷服務程式判斷是否有按鍵按下,若有鍵盤按下,該功能置zf = 0,否則 zf = 1,**如下:
mov ah,01h
int 16h
4.判斷zf是否為1 ,為1 ,證明無按鍵按下,跳轉a1繼續輸出字串,否則結束程式
以上就是我的程式的思路,是不是很簡單啊,具體程式如下,如果有什麼問題可以繼續問,一定為你解答!
data segment
content db 'good morning ','$'
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
a1:mov dx,offset content
mov ah,9
int 21h
call delay
mov ah,01h
int 16h
jz a1
mov ah,4ch
int 21h
delay proc near
mov bx,25000
a2:mov cx,20000
loop $
dec bx
jnz a2
retdelay endp
code ends
end start
4樓:匿名使用者
#include
#include
using namespace std;
void main()
for (;;)
cout<<"good morning" 執行結果每五秒顯示一次: 記得采納哦 組合語言程式 使數碼管顯示1,2,3,4,5,6,7,8 5樓:匿名使用者 scanled equ 30h org 0000h ljmp main org 001bh ljmp t1isr ;掃描顯示 org 0030h main: mov sp,#5fh mov tmod,#10h mov th1,#0ech mov tl1,#078h mov scanled,#0 setb et1 setb tr1 setb ea sjmp $ ;--------------------t1isr: clr tr1 mov th1,#0ech mov tl1,#78h setb tr1 mov dptr,#ledtab mov r2,scanled mov a,#01h cjne r2,#0,t1dis0 sjmp t1dis1 t1dis0: rl a djnz r2,t1dis0 t1dis1: mov p2,a mov a,scanled inc a movc a,@a+dptr mov p0,a inc scanled mov a,scanled cjne a,#8,t1end mov scanled,#0 t1end: reti ;--------------------ledtab: db 0c0h ;"0" 00h db 0f9h ;"1" 01h db 0a4h ;"2" 02h db 0b0h ;"3" 03h db 99h ;"4" 04h db 92h ;"5" 05h db 82h ;"6" 06h db 0f8h ;"7" 07h db 80h ;"8" 08h db 90h ;"9" 09h db 88h ;"a" 0ah db 83h ;"b" 0bh db 0c6h ;"c" 0ch db 0a1h ;"d" 0dh db 86h ;"e" 0eh db 8eh ;"f" 0fh db 0ffh ;" " 10h ;--------------------end 6樓:匿名使用者 你這問題沒有辦法幫忙,是要**哪,還是在你的實驗板上顯示,什麼也不說,就要幫忙,忙不了。 用完整的組合語言編寫使數碼管迴圈顯示0,1,2,3,4,5,6,7,8,9的程式 7樓:匿名使用者 程式如下: /********************************** 編寫:jzy23 *********************************/ #include #define uint unsigned int #define uchar unsigned char /*********************** 共陰數碼管顯示碼 ***********************/ uchar code display[10]= ; 延時函式 功能:晶振為12mhz時,延時count微秒 引數:count 返回值:void void delay1xms( uint count) /*********************** 主函式*********************/ void main(void)}} 編一個組合語言程式:輸入自己的學號,然後最後一位數字乘以10,結果以10進位制數顯示在螢幕上,求大神 8樓:匿名使用者 dseg segment xh db 10 db 0 db 10 dup(0) db '$' msg0 db 'input xue hao:$' msg1 db 0dh, 0ah, 'the last digital x 10 = $' dseg ends assume cs:cseg, ds:dsegcseg segment start: mov ax, dseg mov ds, ax lea dx, msg0 mov ah,9 int 21h lea dx, xh mov ah,10 int 21h lea dx, msg1 mov ah,9 int 21h xor bh, bh mov bl, xh+1 dec bl mov al,[bx+2] and al,0fh mov bl,10 mul bl call print mov ah,4ch int 21h print proc near xor cx, cx mov bx, 10 q0:xor dx, dx div bx or dx, 0e30h inc cx push dx cmp ax, 0 jnz q0 q1:pop ax int 10h loop q1 retprint endp cseg ends end start 3 計算1090h 1280h的和。4 ax 1090h,bx 90h。5 mov dx,1 mov ax,100h mov bx,16 imul bx 1 執行後,ax f000h,bx 16,dx ffffh 2 若將imul改為mul則執行完後,ax 1600h,bx 16,dx 000bh ... 孟靜渠思雨 data segmentxdw 345y dw234zdw 234m dw897ndw 999 定義五個數rdw 2dup 儲存結果 data ends code segment assume cs code,ds data start movax,data movds,ax movax... 湯旺河邊 dos功能呼叫9號功能 顯示以ds dx開始的字串,當遇到乙個 時,結束顯示。樓主程式中,lea si,aa add si,5 mov byte ptr si 把字串中第4個字元改為 致使顯示前3個字元之後,結束顯示,這是導致 只是輸出前3個 的癥結所在。把這三條指令的後兩條刪掉即可。下面...《組合語言程式設計題目解答,組合語言程式設計題目,線上等答案!!!!急!!!!!!!!!!
用組合語言編寫求數的平均數,用組合語言編寫求三個數的平均數
組合語言問題,菜鳥請求高手,組合語言問題,輸出了正確結果,但是下面還輸出了許多亂碼??