組合語言題,哪位大俠幫幫忙啊

時間 2021-05-07 20:00:56

1樓:匿名使用者

第一道、

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

註釋stack segment stack ;定義堆疊

dw 100 dup(0)

stack ends

data segment ;資料段開始

bin dw 7462

buf db 6 dup(0),0dh,0ah,'$'

ten dw 10

data ends

code segment

assume cs:code,ds:data,ss:stack ;約定暫存器

start: mov ax, data

mov ds,ax

mov ax,bin ;把bin值讀入ax

or ax,ax ;對值無影響,影響標誌位

jns plus ;sf=0,即為正數時轉移到plus

neg ax ;負數的話取負

mov buf,'-' ;把'-'賦給buf第一個位元組

jmp next

plus: mov buf,'+' ;把'+'賦給buf第一個位元組

next: mov cx,5 ;初始化迴圈變數

l1: mov dx,0 ;dx清零,為了不影響下面的除法

div ten ;ten是個字型別,所以拿dx:ax表示的32位數除以10

push dx ;把除得餘數壓棧,為了反向輸出

loop l1

mov cx,5 ;迴圈初始化

lea bx,buf+1 ;把buf+1的偏移地址賦給bx

l2: pop ax ;把依次壓進去的餘數彈出來

add al,30h ;把數字轉換成對應的字元

mov[bx], al ;把轉換得來的位元組放到bx指向的記憶體中

inc bx ;bx指標右移一位元組

loop l2 ;迴圈5次

lea dx,buf ;把buf的偏移地址賦給dx

mov ah,9

int 21h ;用9號中斷顯示字串

mov ah,4ch

int 21h ;正常退出程式

code ends

end start

程式框圖:

餓,,不會畫,,,根據註釋寫出來應該比較容易

功能:以十進位制形式在螢幕上顯示bin的值

結果:+07462

第二道、

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

data segment

num equ 60

p1 db 'string:',0dh,0ah,'$'

p2 db 0ah,0dh,'right-adjusting of string:',0dh,0ah,'$'

string1 db num,0,num dup(' '),0ah,0dh,'$'

string2 db num,0,num dup(' '),0ah,0dh,'$'

strout db num dup(?),num dup(?)

data ends

stack1 segment para stack

stack1 ends

code segment

assume cs:code,ds:data,ss:stack1,es:data

start:

mov ax,data

mov ds,ax

mov es,ax

lea dx,p1

mov ah,9

int 21h ;這3行顯示p1指向的字串

lea dx,string1

mov ah,0ah

int 21h ;這3行呼叫10號中斷向ds:dx記憶體輸入字串

mov dl,0ah

mov ah,2

int 21h ;換行

lea dx,string2

mov ah,0ah

int 21h ;輸入第二行字串

lea dx,p2

mov ah,9

int 21h ;顯示p2字串

lea di,strout ;strout偏移地址賦給di

lea si,string1+1 ;第一次輸入字串實際輸入的字元數

xor cx,cx

mov cl,byte ptr[si] ;迴圈輸入字串個數次

lp_1:

inc si ;si指標右移1位元組

mov al,byte ptr[si]

mov byte ptr[di],al ;這兩句實現字串複製到輸出字串裡

inc di ;di右移一位元組

loop lp_1

lea si,string2+1 ;這段迴圈和上面一樣,只不過複製string2

xor cx,cx

mov cl,byte ptr[si]

lp_2:

inc si

mov al,byte ptr[si]

mov byte ptr[di],al

inc di

loop lp_2

mov byte ptr[di],'$' ;給字串末端加上'$'符號

lea dx,strout

mov ah,9

int 21h ;把最終結果輸出出來

mov ah,4ch

int 21h ;正常退出

code ends

end start

輸出結果:

string:

abcde

123cde

right-adjusting of string:

abcde123cde

2樓:匿名使用者

好好學習,不要只知道問別人~

什麼是組合語言,什麼是彙編和組合語言?

叢依波弘瀾 組合語言 assembly language 是面向機器的程式設計語言。在彙編語閤中,用助記符 memoni 代替操作碼,用地址符號 symbol 或標號 label 代替地址媽。這樣用符號代替機器語盲的二進位制碼,就把機器語音變成了組合語言。於是組合語言亦稱為符號語言。使用組合語言編寫...

學習組合語言選哪本書好

嬴火燚 入門級 組合語言 推薦清華大學出版社王爽的 組合語言 很簡單,很好入門。書中內容的編排有一定連貫性,要用到哪部分知識就介紹哪部分知識。其它書籍不適合入門的原因是一開始就將所有的暫存器 定址方式列舉出來,記憶已經相當困難,何況是活用?所以還沒有體會到程式設計的快樂,就被推進了無盡的苦難中!如果...

組合語言問題求解,2個組合語言問題,求解

我也是學這門課,我試試吧。本人學的不是很精通,僅供參考。1 code segment assume cs code mov cx,offset data mov dx,offset max 用lea指令也可以mov ax,cx mov bx,cx 1 cmp ax,bx ja loop1 mov d...