復制下面的文本內容,粘貼於記事本(註意:不要刪除中間的空行),保存為A.TXT,然後在DOS提示符下輸入:DEBUG <A.TXT,Ok。
e10d 'HELLO!$'
a100
lea dx,[10d]
mov ah,9
int 21
mov ax,4c00
int 21
rbx
0
rcx
14
na.com
w100
q
-----------------------------------------
2. 編寫完整匯編程序,將內存中10個有符號數求和。
; 下面的程序是16位匯編,編譯通過,運行正確。
; Program Name: Adding.asm
Adding SEGMENT
ASSUME CS:Adding,DS:Adding
ORG 100H
Start: jmp Begin
Decimal DW 780,-370,266,48,-127,890,21,640,-1023,513 ; 10個有符號數
Deci_Sum DW ?
Begin: lea si,Decimal
cld
mov cx,9
lodsw
Adding0: add ax,[si]
inc si
inc si
loop Adding0
mov [si],ax
Exit_Proc: mov ax,4c00h ;結束程序
int 21h
Adding ENDS
END Start
-----------------------------------------
3. 編寫完整程序將內存中壹個無符號字節數以16進制的形式顯示在屏幕上
; 下面的程序是16位匯編,編譯通過,運行正確。
; Program Name: Hex_ASCII.asm
Hex_ASCII SEGMENT
ASSUME CS:Hex_ASCII,DS:Hex_ASCII
ORG 100H
Start: jmp Begin
DecimalNum db 76 ;無符號字節數
Change_Hex proc near
cmp al,9
ja Charactor
or al,30h
stosb
ret
Charactor: sub al,9
or al,40h
stosb
ret
Change_Hex endp
ChangeHex0 proc near
xor ah,ah
mov cl,4
shl ax,cl
shr al,cl
xchg ah,al
call Change_Hex
xchg ah,al
call Change_Hex
ret
ChangeHex0 endp
Begin: lea di,HeximalASC ;顯示十六進制符號字符串地址
cld ;設置變址寄存器變址方向
mov al,DecimalNum
call ChangeHex0
mov al,'$'
stosb
lea dx,HeximalASC ;字符串首地址
mov ah,9 ; 顯示結果
int 21h
Exit_Proc: mov ax,4c00h ;結束程序
int 21h
HeximalASC:
Hex_ASCII ENDS
END Start
-----------------------------------------
4. 編寫完整匯編程序,統計內存中10個有符號數中正數的個數
; 下面的程序是16位匯編,編譯通過,運行正確。
; Program Name: positive.asm
positive SEGMENT
ASSUME CS:positive,DS:positive
ORG 100H
Start: jmp Begin
Decimal DW 780,-370,266,48,-127,890,21,640,-1023,513 ; 10個有符號數
Deci_Sum DB ? ;正數的個數計數器
Begin: lea si,Decimal
cld
mov cx,10
mov Deci_Sum,0 ;計數器清零
positive0: lodsw
test ax,8000h
jz NextOne
inc Deci_Sum
NextOne: loop positive0
Exit_Proc: mov ax,4c00h ;結束程序
int 21h
positive ENDS
END Start
-----------------------------------------
5. 編寫完整匯編程序,將內存中的5個無符號數從小到大排列
; Program Name: Bubbling.ASM
Bubbling SEGMENT
ASSUME CS:Bubbling,DS:Bubbling,ES:Bubbling
ORG 100H
Start: JMP Begin
Array DB -112,56,72,98,32 ;需要排序的數據
Elem_Num EQU ($-Array)/TYPE Array-1 ;外循環次數
Begin: MOV CX,Elem_Num
Scanning: PUSH CX ;入棧保存外循環次數
LEA SI,Array ;數組首地址裝入源變址寄存器
Compare: PUSH SI
POP DI ;當前數組元素地址賦給目的變址寄存器,以備交換之用
LODSB ;將當前數組元素讀入累加器
CMP AL,[SI] ;當前數組元素與相鄰的下壹個數組元素相比較
JBE NextOne ;若小於或等於,不作數據交換,處理下壹個數組元素
XCHG AL,[SI] ;若大於,交換數組元素
STOSB ;保存數值較小者
NextOne: LOOP Compare ;處理下壹個數組元素
POP CX ;外循環次數出棧
LOOP Scanning ;下壹趟比較
Exit_Proc:MOV AX,4C00H ;結束程序
INT 21H
Bubbling ENDS
END Start
-----------------------------------------
6.編寫完整匯編語言程序,將內存中壹個組合BCD數以十進制顯示在屏幕上。
; 下面的程序是16位匯編,以組合BCD碼58為例,編譯通過,運行正確。
; Program Name: BCD_Code.asm
BCD_Code SEGMENT
ASSUME CS:BCD_Code,DS:BCD_Code
ORG 100H
Start: mov cl,4
mov al,BCD_Str
xor ah,ah
shl ax,cl
shr al,cl
or ax,3030h
xchg ah,al
mov word ptr Dec_Str,ax
lea dx,Dec_Str ;字符串首地址
mov ah,9 ; 顯示結果
int 21h
Exit_Proc:mov ax,4c00h ;結束程序
int 21h
BCD_Str db 58h
Dec_Str db ' $'
BCD_Code ENDS
END Start