请教汇编两题
时间:2011-11-03
来源:互联网
Assembly code
二:Assembly code
以上两题第一题是输入一个字符判断并输出这个字符的前导字符和后续字符
第二题是求一个数组中正负数的个数 结果有错 大家抽空看看 谢了
data segment str1 dw 0ah,0dh,'input a letter' str2 dw 0ah,0dh,'wrong data' str3 dw 0ah,0dh,'no,guide' str4 dw 0ah,0dh,'no,follow-up' data ends code segment assume cs:code,ds:data start: lea dx,str1 mov ah,09h int 21h mov ah,01h int 21h cmp al,61h jl lop1 jz lop2 cmp al,7ah ja lop3 jz lop4 jmp lst lop1: lea dx,str2 mov ah,09h int 21h jmp last lop2: lea dx,str3 mov ah,09h int 21h mov dl,al mov ah,02h int 21h mov dl,al+1 mov ah,02h int 21h jmp last lop3: lea dx,str2 mov ah,09h int 21h jmp last lop4: lea dx,str4 mov ah,09h int 21h mov dl,al-1 mov ah,02h int 21h mov dl,al mov ah,02h int 21h jmp last lst: mov dl,al-1 mov ah,02h int 21h mov dl,al mov ah,02h int 21h mov dl,al+1 mov ah,02h int 21h jmp last last: mov ah,4ch int 21h code ends end start
二:Assembly code
data segment str1 db 'positive number:$',0ah,0dh str2 db 0ah,0dh, 'minus number:$' num dw 1,2,-8,4,-6,-5,-4,-3,11,12,57,33,14,12,45,11,-22,-3,-13,41 count dw ? data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cl,0 mov si,0 mov count,0 lop: inc count mov ax,num[si] cmp ax,0 jg clp inc si cmp count,20 jz last jmp lop clp: inc cl last: lea dx,str1 mov ah,09h int 21h add cl,30h mov dl,cl mov ah,02h int 21h lea dx,str2 mov ah,09h int 21h mov bl,20 sub bl,cl mov dl,bl mov ah,02h int 21h mov ah,4ch int 21h code ends end start
以上两题第一题是输入一个字符判断并输出这个字符的前导字符和后续字符
第二题是求一个数组中正负数的个数 结果有错 大家抽空看看 谢了
作者: zp032420 发布时间: 2011-11-03
引用楼主 zp032420 的回复:
Assembly code
data segment
Assembly code
data segment
第二题供参考:
Assembly code
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;题目2、Array开始存放着20个带符号的数(自己定), ;分别统计负数、0、正数的个数,并分别存入到intA、intB、intC存储单元中。 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< TITLE 'No 2' NAME myProg PAGE 55, 132 data segment Array dw -1, 0, 3, -4, 9, -8, 0, 56, 9, 4 dw 7 , 0, 3, -9, 0, -6, 0, 8, -8, 4 intA dw 0 ;记正数个数 intB dw 0 ;记0的个数 intC dw 0 ;记负数的个数 sAscii db 6 dup(?) ;用来存放转换的十进制数字串 Msg1 db 0dh,0ah, ' Positive number = $' Msg2 db 0dh,0ah, ' Zero = $' Msg3 db 0dh,0ah, ' Negative number = $' newline db 0dh,0ah,'$' ;回车换行 data ends stack segment stack 'stack' dw 32 dup(?) stack ends ;===================================================================== ;代码段 ;===================================================================== code segment assume ss:stack,cs:code,ds:data start: mov ax,data ;设置ds寄存器,使其指向data段 mov ds,ax ; mov si,offset Array ;装入数组的首地址 mov cx,20 ;设置循环记数器,使其标识有20个项 ;使用一个循环,逐个扫描数组每一项,并查验该项是正?还是负?还是0?并分类记数 getNext: mov ax, [si] ;取数组的项 or ax,ax ;该指令会修改SF,OF标志寄存器,以此来作为判断的依据 ;也可以用cmp ax,0 ,或者test ax,ax ;cmp ax,0 ;test ax,ax je addM2 ;ax为0 跳转到记0的子程序 jg addM1 ;ax大于0,跳转到记正数的子程序 inc intC ;否则,记负数的变量增加1 jmp bottom ; addM2: inc intB ; jmp bottom addM1: inc intA bottom: add si,2 ;修改指针,指向下一个项(每项占两个字节哟) loop getNext ;让记数器cx自动减1,如果不为零就进入下一循环 ;------------------------------------------------------ ;输出(根据题意输出这段可以不要,到此已可直接退出了): mov ax,4c00h int 21h end start
作者: gsy999 发布时间: 2011-11-03
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28