當前位置:編程學習大全網 - 編程語言 - 匯編程序設計問題

匯編程序設計問題

1,編碼兩個通用過程完成AX中存儲的二進制數轉換成壓縮BCD碼和BCD碼轉換成二進制數。

;這個程序通過編譯正確運行。

代碼段

假設CS:Code,DS:Code

;-

;功能:將AX中的二進制數轉換成壓縮的BCD碼。

;條目:AX=16位二進制數(因為最大壓縮BCD碼是9999H,所以AX的二進制值不能大於270FH)。

;Exit: AX=轉換後壓縮的BCD碼。

Binary_BCD Proc Near

推送dx

推送cx

推送bx

推di

mov @@Temp_Save,0

mov @@Temp_Save[2],0;將臨時雙字存儲單元設置為0。

mov bx,10

lea di,@@Temp_Save[3]

cld

@@Divide: xor dx,dx

分部bx

mov [di],dl;保存剩余部分

十二月二日

測試ax,0ffffh

jnz @ @除

mov cl,4

mov ax,@@Temp_Save[2]

xchg ah,al

shl al,cl

化學發光二極管

mov dl,啊

移動軸,@@Temp_Save

xchg ah,al

shl al,cl

化學發光二極管

運動al,dl

波普迪

pop bx

流行cx

流行dx

浸水使柔軟

@@Temp_Save dw 2 dup(?)

Binary_BCD EndP

;-

;功能:將AX中壓縮的BCD碼轉換成二進制數。

;條目:AX=壓縮BCD碼

;退出:AX= 16轉換後的二進制數。

BCD_Binary Proc Near

推送dx

推送cx

推動bx

mov dx,ax

mov bx,10

mov cl,4

噓啊,cl

xchg ah,al

字節擴展為字

推送dx

多重bx

流行dx

和dh,0fh

xchg dh,dl

推送dx

異或dh,dh

添加ax,dx

多重bx

流行dx

xchg dh,dl

異或dh,dh

推送dx

shr dx,cl

添加ax,dx

多重bx

流行dx

和D1,0fh

添加ax,dx

pop bx

流行cx

流行dx

浸水使柔軟

BCD_Binary EndP

;-

開始:推送cs

流行數碼相機

推送cs

pop es使數據段、附加段和代碼段成為同壹個段。

mov ax,3456

調用Binary _ BCD將AX中的二進制數轉換成壓縮的BCD碼

調用BCD _ Binary將AX中壓縮的BCD碼轉換成二進制數。

Exit_Proc: mov ah,4ch結束程序

int 21h

代碼結束

結束開始;這是編譯的結尾

2.附加段中有壹個數組,第壹個地址是BUFF,數組中的第壹個字節存儲數組的長度。寫個程序在數組中找0,找到後從數組中刪除,後續項向前壓縮,剩下的用0填充。

;這個程序通過編譯正確運行。

代碼段

假設CS:Code,DS:Code

BUFF db 10,56,78,35,0,89,51,63,0,76,123

開始:推送cs

流行數碼相機

推送cs

pop es使數據段、附加段和代碼段成為同壹個段。

cld

lea si,BUFF數組頭地址→si

lodsb讀取數組長度

異或啊,啊

推斧

pop cx數組長度→cx

find _ Zero:lodsb;數組元素被讀入累加器a1

cmp al,0;是0嗎?

jnz Next _ One不為0,跳到下壹個元素。

;-

;找到0,從數組中刪除,後續項向前壓縮,其余用0填充。

推送si

波普迪

十二月二日

推di

推送cx

十二月cx

代表movsb

mov字節指針[si-1],0

流行cx

波普斯

;-

Next_One:循環Find_Zero

Exit_Proc: mov ah,4ch結束程序

int 21h

代碼結束

結束開始;這是編譯的結尾

3.編寫壹個程序統計學生的數學成績,將學生分為90 ~99分、80 ~89分、70 ~79分、60~69分、60分以下,並將每壹節的人數發送到內存單元。

;這個程序通過編譯正確運行。

代碼段

假設CS:Code,DS:Code

;-

;功能:輸出回車和換行

進入CTLF附近

推斧

推送dx

mov ah,02h

mov dl,0dh

int 21h

mov dl,0ah

int 21h

流行dx

爆破筒

浸水使柔軟

進入_CTLF終點

;-

;函數:將AL中的二進制無符號數轉換成顯式的十進制ASCII碼。

;條目:AL=二進制數;Di=轉換後的ASCII存儲地址。

;退出:無

Dec_ASCII Proc附近

推送si

推送cx

推動bx

推di

mov bl,10

異或cx,cx

lea di,@@Temp_Save[3]

cld

@@Divide: xor啊,啊

div bl

或者啊,30h

mov [di],啊

十二月二日

inc cx

測試鋁,0ffh

jnz @ @除

推di

波普斯

公司si

波普迪

pop bx

推di

代表movsb

mov字節指針[di],' $ '

波普迪

流行cx

波普斯

浸水使柔軟

@@Temp_Save db 4 dup(?)

Dec_ASCII EndP

;-

得分db 56,69,84,82,73,88,99,63,100,80,0,10,80,100,90,73,43,60,63,72,88,42,58,99,100,89,65,61,74,84,79學校報告;副本

元素equ($-分數)/類型分數;元素數量

score _ Tab db 6 dup(0);每個分數段的計數

結果數據庫' 00 - 59:'

Temp_STr db 4 dup ('$ ')

Score100 db '====100:'

開始:推送cs

流行數碼相機

推送cs

pop es使數據段、附加段和代碼段成為同壹個段。

cld

lea si,得分;年級第壹個地址

mov cx,元素;成就數量

mov dl,10;用來除10。

read _ Score:lodsb;提取結果

div dl10除外

cmp al,5;& gt5、通過考試

jg $+4

mov al,5;& lt=5,失敗

sub al,5;負5,小數段計數地址偏移量。

cbw

推斧

pop bx

Inc Score _ Tab[bx];計數增加了1

循環Read _ Score循環計數下壹個結果。

;顯示統計結果

mov bl,59h

mov cx,5

lea si,Score _ Tab每個片段計數數組的第壹個地址

lea di,臨時字符串

lea dx,Resault統計結果字符串地址

列表結果:

lodsb讀入計數值

調用Dec_ASCII

mov啊,9;顯示統計結果

int 21h

呼叫CTLF中心

電影al,bl

添加al,1

daa

mov bl,al

推送cx

mov cl,4

異或啊,啊

化學發光二極管

施拉爾,cl

或ax,3030h

xchg ah,al

移動字指針結果,ax

電影al,bl

添加al,9

mov bl,al

異或啊,啊

化學發光二極管

施拉爾,cl

或ax,3030h

xchg ah,al

mov字指針結果[5],ax

流行cx

循環列表_結果

推送si

推di

蕾斯,得分100

萊婭·迪·雷索爾

lea cx,臨時字符串

子cx,di

代表movsb

波普迪

波普斯

lodsb讀入計數值

調用Dec_ASCII

mov啊,9;顯示統計結果

int 21h

Exit_Proc: mov ah,4ch結束程序

int 21h

代碼結束

結束開始;這是編譯的結尾

  • 上一篇:統計學中計算的平均數的算術平均數和幾何平均數在什麽情況下使用?
  • 下一篇:女生適合學金融科技專業嗎 2021前景怎麽樣
  • copyright 2024編程學習大全網