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