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 org 0000h ljmp main org 000bh ljmp t0int org 0030h main mov tmod,01h mov th0,high 65536 5000 mov tl0,low 65536 5000 setb tr0 setb et0 setb ea clr a sj... 蜜蜂小玉米 assume cs code assume ds data data segment db i love you.data ends code segment start mov ax,data mov ds,ax mov bx,0 s0 check mov al,ds bx cmp a... 當然不是這臺電腦和另外一臺的區別 而是各種不同平臺之間的通用性。比如unix 和 windows等平臺之間 組合語言與硬體打交道,當然首先要有對應得cpu支援了,其他的就沒有別的了。cpu架構一樣,這個語言就能在上面編譯 機器 是指電腦,但不同體系的電腦 體系是不同的,就是cpu指令不同。比如int...組合語言程式設計,組合語言程式設計
組合語言問題,組合語言問題
組合語言通用性問題,組合語言有什麼特點