1樓:
1樓給的思路很對!但是第1題用51彙編解答就錯了,因為第3題用到dos功能呼叫,所以顯然樓主說的是8086彙編。
所以......樓主要注意提問方式,要有所界定^-^。
題目都不算難,樓主應該自己做。嘿嘿,我通常不回答這樣的問題,我不替人做題。
建議樓主將分數給1樓。
當然,另有其它人替你做題的再說,但我堅持認為那不是幫助你。祝學習愉快
2樓:
1:mov dptr,#block
mov a,#number ;學號
movc a,@a+dptr
mov result,a
block:
db …………
number:
db …………
2:給你個思路,有的指令不常用記不住,先把buf給到a,然後有指令是低半位元組交換,換完以後,在把原來還在高位的,進行高低位元組交換(swap)只能在累加器a,在儲存到你要的地址裡面就ok了!!
3:沒有做過這個!!
3樓:湯旺河邊
這三個程式互不衝突,三合一放在一個程式裡面了。
; 本程式通過編譯,執行正確
code segment
assume cs:code,ds:code
start: push cs
pop ds
push cs
pop es
jmp subject_1
; -----------------------------------------
; 1.在以block為首地址的位元組單元中,存放了06計算(1)班的學生考試成績,試編制一程式,利用學生的序號來查表得到該學生的成績,設學生的序號在number單元,查表結果存入result單元中
block db 56,69,84,82,73,88,99,63,100,80,70,85,100,90,73,43,60,63,72,88 ; 成績單
number db 18 ;學生序號
result db ? ;number號學生成績
subject_1: lea bx,block
mov al,number
xlat ;查表,取得對應序號的學生成績
mov result,al ;儲存成績
jmp subject_2
; -----------------------------------------
; 2.編一程式段將buf位元組單元中的數拆成高低四位,並且將分離出的高四位和低四位分別放於buf+1和buf+2位元組單元的低四位上
buf db 9ah,?,?
subject_2: mov al,buf
xor ah,ah
mov cx,4
shl ax,cl
shr al,cl
mov buf[1],ah
mov buf[2],al
jmp subject_3
; -----------------------------------------
; 3.編制一子程式,將al中一位十六進位制數轉換為對應的ascii碼並用2號dos功能顯示出來,輸入引數:補轉換的十六進位制數已在al中
; 功能:將al中的低4位二進位制數轉換成十六進位制顯示的ascii碼
; 入口:al
; 出口:al=轉換後的ascii碼
al_ascii proc near
cmp al,10 ;al<10?
jb @@to_ascii ;al<10,按數字處理
add al,7 ;al>=10,按大寫字母處理
@@to_ascii: add al,'0' ;轉換成相應的數字或大寫字母
retal_ascii endp
subject_3: mov al,8
call al_ascii
mov dl,al
mov ah,2
int 21h
; -----------------------------------------
exit_proc: mov ah,4ch ;結束程式
int 21h
code ends
end start ;編譯到此結束
求解一道組合語言程式題,急!!!
4樓:納蘭旖兒
每次看到湯叔的程式都好有壓力= =~~我寫個簡單的吧~這個程式比較簡單~但是個數超過10會出錯~因為在網咖寫的**沒有編譯~明天會來檢查下。。。。。
data segment
str db 'abcabcabcabcdfalk','!'
an db 30h
bn db 30h
cn db 30h
data ends
code segment
assume ds:data,cs:codestart:
mov ax,data
mov ds,ax
mov si,offset str
lop:
cmp byte ptr [si],'a'
jne next1
add an,1
next1:
cmp byte ptr [si],'b'
jne next2
add bn,1
next2:
cmp byte ptr [si],'c'
jne next3
add cn,1
next3:
cmp byte ptr [si],'!'
je next4
inc si
jmp lop
next4:
mov ah,02h
mov dl,an
int 21h
mov dl,' '
int 21h
mov dl,bn
int 21h
mov dl,' '
int 21h
mov dl,cn
int 21h
mov ah,4ch
int 21h
code ends
end start
5樓:
;完整程式
;編譯,連結通過
;執行正確
data segment
str db 'a bb ccc !'
re db 3 dup(0)
data ends
stack segment stack
sktop db 40h dup(?)
sksize equ $-offset sktopstack ends
code segment
assume cs:code,ds:data,ss:stackbegin: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,sksize
lea si,str
lea di,re
call stat
mov ah,2
mov cx,3
xor bx,bx
dsp: mov dl,[bx+di]
add dl,'0'
int 21h
add bl,'a'
mov dl,bl
int 21h
mov dl,' '
int 21h
sub bl,'a'-1
loop dsp
mov ax,4c00h
int 21h
;引數: si=欲統計的字串的有效地址
; di=儲存統計結果的有效地址
;返回: none
stat proc
push ax
push bx
push cx
push si
mov al,0
mov cx,'c'-'a'+1
xor bx,bx
fill0: mov [bx+di],alinc bx
loop fill0
xor bx,bx
xor ah,ah
stats: mov al,[si]
cmp al,'!'
je statre
sub al,'c'
ja contn
add al,'c'-'a'
js contn
mov bx,ax
inc byte ptr [bx+di]
contn: inc si
jmp stats
statre: pop si
pop cx
pop bx
pop ax
retstat endp
code ends
end begin
彙編程式小問題,彙編程式小問題?
彙編十六進位制的數如果是字母開頭,就得在數字前面加一個0,db是定義一個位元組的數字,即值為a,即十進位制是10,對應的ascii碼是換行,即從新行開始顯示。經發了,女生以後應該注意這位老師和他要有點距離,警醒點 就是你叫猴子吧店裡好了一起發貨吧的貨了 不知道,不知道,不知道,不知道,不知道,不知道...
寫出下列彙編程式的功能,並用C語言程式寫出
太亂了,哥不行,同你一起等待高人。第一個是求8個數的平均值。include define uchar unsigned charuchar code table main 第二個是判斷從30h開始的16個數如果是d0h則結束,否則將該數依次存入50h開始的暫存器。include define uch...
微控制器大神請進,51微控制器彙編程式,程式可發至
生活如歌 1 p1口做輸出口,編寫程式,使p1口接的8個發光二極體l1 l8按16進位制加一方式點亮發光二極體。程式如下 org 0540h ha1s mov a,00h a初值為0 ha1s1 jb p3.3,ha1s1 如果p3.3為1則等待 有脈衝變0一次 mov r2,20h r2賦值為20...