mov ds, ax mov es, ax
mov ah, 09h ;输出提示信息Please input a num: mov dx, offset inf int 21h
mov ah, 0Ah ;接收一个无符号十进制整数(小于65536) mov dx, offset ibuf int 21h
mov ax, 0
mov cl, ibuf+1;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中 mov ch, 0
mov si, offset ibuf+2 loop1: mov dx, 10 mul dx
and byte ptr[si], 0Fh add al, [si] adc ah, 0 inc si
loop loop1
mov bx, 0 loop2: shr ax, 1 adc bx, 0 cmp ax, 0 jnz loop2
mov ax, bx
mov di, offset obuf+5
;将ax中的二进制数转换为十进制数并以ascii的形式存于obuf mov byte ptr [di], '$' mov bx, 10 loop3: mov dx, 0 div bx
add dl, 30h dec di
mov [di], dl or ax, ax jnz loop3
mov ah, 09h ;输出提示信息The num of 1: mov dx, offset inf2 int 21h
mov ah, 09h ;将统计结果在屏幕上显示出来 mov dx, di int 21h
mov ax, 4c00h int 21h
end start
实验习题4源码:
; multi-segment executable file template.
.model small ;定义程序的存储模式(small表示小型模式) .stack ;定义堆栈段
.data ;定义数据段 N equ 5
ibuf db 4, 0, 3 dup(0)
inf1 db 'Please input N num(0-255):', 0ah, 0dh, '$'
inf2 db 'Sort:', 0ah, 0dh, '$' buf db N dup(0) obuf2 db 4 dup(0) obuf db 0ah, 0dh, '$' .code
start: mov ax, @data mov ds, ax
mov dx, offset inf1 ;输出提示信息 mov ah, 09h int 21h
mov di, offset buf
mov bx, N ;设置外层循环次数 loop1: mov dx, offset ibuf mov ah, 0Ah int 21h
mov cl, ibuf+1 ;设置内层循环次数 mov ch, 0
mov si, offset ibuf+2 mov ax, 0
loop2: mov dx, 10 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中 mul dx
and byte ptr[si], 0Fh add al, [si] inc si
loop loop2 mov [di], al inc di
mov dx, offset obuf ;回车换行 mov ah, 09h int 21h dec bx cmp bx, 0 jnz loop1
mov bx, N-1 ;比较大小
mov cx, bx mov dx, bx
mov di, offset buf loop3: mov si, di mov al, [di] inc si
loop4: cmp [si], al jbe loop5 mov al, [si] mov ah, [di] mov [si], ah mov [di], al loop5: inc si loop loop4 dec dx mov cx, dx inc di dec bx cmp bx, 0 jne loop3
mov dx, offset inf2 ;输出提示信息 mov ah, 09h int 21h
;结果输出 mov cx, N
mov si, offset buf
loop6: mov di, offset obuf2+3
;将buf中的二进制数转换为十进制数并以ascii的形式存于obuf2,并输出 mov byte ptr [di], '$' mov bx, 10 mov al, [si] mov ah, 0 loop7: mov dx, 0 div bx
add dl, 30h dec di
mov [di], dl or ax, ax jnz loop7 mov dx, di mov ah, 09h int 21h
mov dx, offset obuf mov ah, 09h int 21h inc si
loop loop6
mov ax, 4c00h
int 21h end start
3、实验结果
(1)实验结果
(2)实验习题1
程序流程图:
(3)实验习题2