第一范文网 - 专业文章范例文档资料分享平台

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)解析

来源:用户分享 时间:2025/5/29 13:06:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

mov ah,9h int 21h call crlf pop ax ret INFO ENDP

;回車換行的過程 CRLF PROC NEAR push ax push dx mov dl,0dh mov ah,2h int 21h mov dl,0ah mov ah,2h int 21h pop dx pop ax ret CRLF ENDP ;輸入的過程

INPUT PROC NEAR mov ah,1 int 21h ret INPUT ENDP

;檢查是否非數字字符的過程~ CHECK PROC NEAR push dx

cmp al,30h ;如果鍵入的字符ASCII值小於0的ASCII值30H, jb WRONG ;剛轉入WRONG,作錯誤處理

cmp al,39h ;如果鍵入的字符ASCII值大於9的ASCII值39H, ja WRONG ;則轉入WRONG,作錯誤處理 mov cl,al ;把合法的數字ASCII值放入CL中 jmp next

;錯誤處理過程,提示,並等待用戶鍵入新值 WRONG:

mov dx,offset info2 call info call input call check next:

pop dx ret

CHECK ENDP

;根據用戶鍵入的數字,響鈴相應的次數 BELL PROC NEAR push dx

sub cl,30h ;鍵入數字的ASCII值減去30,才能成為次數 mov dl,7h mov ah,2 re:

int 21h dec cx jnz re pop dx ret BELL ENDP CODE ENDS END START 6.程序實現。(末经调试) .model small .data

m db dup (20個數)

n db 20,0,20 dup (?) ;用于存放负数的最大容量为20的数组 p db 20,0,20 dup (?) ;同上,用于存放正数 .code

main proc far start:

mov ax,@data mov ds,ax

call check_store ;判斷數的正負並存入相應數組 call display ;在屏幕上顯示 main endp

check_store proc near push ax push bx push cx

mov cx,20 ;循環次數放入CX cld ;使SI向增加的方向移動 lea si,m ;M的偏移地址放入SI again:

mov al,[si] ;M中的數依次放入AL中 cmp al,0 ;並且依次和0比較

jl store_in_n ;如果小於0,則存入負數組 jg store_in_p ;如果大於0,剛存入正數組 dec cx

jnz again jz exit store_in_n : push bx

mov bl,n[1] ;N中已有數的個數放入BL中,

mov n[bl+1],al ;把AL中負數存入數組N的最後一個數字的下一字節 pop bx jmp again

store_in_p STORE—IN—P push bx

mov bl,p[1] mov p[bl+1],al pop bx jmp again exit:

pop cx pop bx pop ax ret check_store endp display proc near push cx lea si,n[2]

mov cl,n[1] ;數組N中數的個數放入CL cld

mov ah 2

re_display_n: ;依次顯示各個負數 mov dl,[si] int 21h

mov dl,20h ;各個數之間用空格間隔 int 21h dec cl

jnz re_display_n ;下面四行用來回車和換行 mov dl,0dh int 21h mov dl,0ah int 21h ;同上面負數的顯示, lea si,p[2] mov ch,p[1] cld re_display_p:

mov dl,[si] int 21h mov dl,20h int 21h dec ch

jnz re_display_p pop cx ret display endp end start 7.程序實現。(未調試) .model small .data

data db 100d dup (100個數). .code start:

mov ax,@data mov ds,ax

mov cx,101d ;循環次數

mov bl,0feh ;初始化BX為最大的八位無符號正數 mov si,offset data cld again:

dec cx

jz finish ;全部判斷完成 mov al,[si] cbw

div 2 ;每個數除以2

cmp al,0 ;佘數不為0的,不是偶數 jne again

cmp bl,[si] ;每次比較, jl again ;較小的數,

mov bl,[si] ;代替BX中原來的數 jmp again finish:

mov ax,0

mov al,bl ;把最小偶數放到AX中 end start 8.程序實現。(未調試) .model samll .code start:

mov ch,9 ;比較次數放入CH

mov cl,2 ;每次AX循左移的次數放入CL

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)解析.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1q13z5n7k072h8v7sa970wk4t3v47w00u3z_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top