二道彙編程式題,急急急急急急,二道彙編程式題,急急急急急急

時間 2021-05-05 21:01:38

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...