;這個程序通過編譯正確運行。
代碼段
假設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
代碼結束
結束開始;這是編譯的結尾