汇编语言显示汉字程序masm5?用masm5.0编译汇编语言为什么总是出现“unable to open input”

汇编语言显示汉字程序masm5?用masm5.0编译汇编语言为什么总是出现“unable to open input”

本文目录

  • 汇编语言显示汉字程序masm5
  • 用masm5.0编译汇编语言为什么总是出现“unable to open input”
  • 求助: 怎么用dosbox运行汇编程序,其实也就是要怎么样进入C盘的masm5的文件目录下
  • 王爽的课本里说操作系统本身有汇编语言编译器masm5.0 可是怎么才能打开呢 需要重新下载吗我是WIN7的
  • 如何在64位系统运行masm5
  • 为什么用masm5.0编译器将源程序的文件不能得到目标文件
  • 编译成功的汇编源代码,用masm5编译时出错,如下代码
  • 关于masm的使用
  • masm5怎么用多个段的代码

汇编语言显示汉字程序masm5


运用int 10h中断……
比如要显示“一”,则先编码:
00000000 00
00000000 00
00000000 00
00000000 00
11111111 ff
00000000 00
00000000 00
00000000 00
然后再写:
one db 00h,00h,00h,00h,0ffh,00h,00h,00h
mov ax, ds
mov es, ax
mov ah, 10h ; 子功能
mov al, 00h ; 加载自定义字符
mov bh, 08h ; 每个字符占字节数
mov bl, 00h ; 字符表
mov cx, 01h ; 自定义字符数量
mov dx, 41h ; 自定义字符ASCII开始值,这里是从’A’开始
lea bp, one ; 指针es:bp指向自定义字符表
int 10h ; 执行修改……
然后输出字符’A’就是自己定义的“一”字了,用同样的方法定义其他汉字……
一般汉字是一个ASCII占半个汉字,也就是先编码左半边,再编码右半边……

用masm5.0编译汇编语言为什么总是出现“unable to open input”


因为显示字符串子程序,NEAR说明子程序和主程序在同一个代码段中(现无主程序调用)。

DATASEGMENT ;定义数据段
MSG1DB’***WELCOME!***’,’$’;定义输出的第一个字符串信息,字符串必须用DB定义,$为结束标志

ERRMSG DB ’CHOOSE ERROR! -_-b’,’$’;定义输出的字符串信息:选择错误信息
DATA ENDS 
;***************************************************************************************************
CODE SEGMENT ;定义代码段
main proc far
ASSUME CS:CODE ,DS:DATA 
START: 
PUSHDS
SUBAX,AX
PUSH AX
MOVAX,DATA 
MOV DS,AX
CALL ENTER ;调用显示回车换行子程序
LEA DX,MSG1 ;输出第一个字符串的偏移地址
CALL DISPCHS ;调用显示字符串子程序
CALLENTER ;调用显示回车换行子程序
CALLENTER 
LEADX,MSG2 ;输出第二个字符串的偏移地址
CALL DISPCHS ;调用显示字符串子程序
AGAIN: 
CALL ENTER ;定义AGAIN标号.用于选择错误循环
LEA DX,MSG3 ;输出第三个字符串的偏移地址
CALL DISPCHS ;调用显示字符串子程序
MOV AH,01H ;调用1号功能:从键盘输入一个字符并回显;

INT 21H ;完成输入回显;

CMP AL,’1’ ;输入的字符和1相比较;

JE BASICP ;如果相等,转移到BASICP标号(JE=Jump if Equal)‘’
CMP AL,’2’ ;输入的字符和2相比较 ||

JE ADVANP ;如果相等,转移到ADVANP标号(JE=如果相等就转移)

JMP ERROR ;否则就无条件转移到ERROR标号
EXIT: 
MOV AH,4CH ;4C号功能调用:终止当前程序并返回调用程序
INT21H ;返回DOS
BASICP: 
CALL ENTER 
LEA DX,MSG4 ;输出第三个字符串的偏移地址
CALLDISPCHS ;调用显示字符串子程序
CALL ENTER 
JMP EXIT ;无条件转移到EXIT标号
ADVANP: 
CALL ENTER 
LEA DX,MSG5
CALL DISPCHS ;调用显示字符串子程序
CALL ENTER 
JMP EXIT ;无条件转移到EXIT标号
ERROR: 
CALL ENTER
LEA DX,ERRMSG ;输出选择错误信息
CALL DISPCHS ;调用显示字符串子程序
MOV DL,07H ;输出ASCII码的报警(响铃)控制符BEL(07H)
CALL DISPCH ;调用显示单个字符子程序
CALL ENTER
JMP AGAIN
MAINENDP

MOV AH,02H ;2号功能调用:显示器输出字符
INT 21H ;完成输出显示
RET ;返回
DISPCH ENDP ;子程序结尾
ENTER PROC NEAR ;显示回车换行子程序

MOV DL,0DH ;输出ASCII码的回车控制符CR(0DH)

CALL DISPCH ;调用显示单个字符子程序

MOV DL,0AH ;输出ASCII码的换行控制符LF(0AH)

CALL DISPCH ;调用显示单个字符子程序

RET ;返回

ENTER ENDP ;子程序结尾
DISPCHS PROC NEAR;显示字符串子程序,NEAR说明子程序和主程序在同一个代码段中(现无主程序调用)

MOV AH,09H ;9号功能调用:显示字符串

INT 21H ;完成输出显示

RET

DISPCHS ENDP
CODE ENDS


求助: 怎么用dosbox运行汇编程序,其实也就是要怎么样进入C盘的masm5的文件目录


运行DOSXBOX之後
Z:\ 》mount c c:\masm5 按下ENTER
键入
C:\ 按下ENTER(此时的DOSBOX中的C磁盘就是masm5的文件夹了)

王爽的课本里说操作系统本身有汇编语言编译器masm5.0 可是怎么才能打开呢 需要重新下载吗我是WIN7的


win7可以运行masm5的,但是系统并不自带,所以楼主要去下载,然后解压到一个文件夹中,在cmd中进入所在目录,就可以运行masm5,并不像楼上所说的那样不能运行masm5,只是win7现在高级很多,所以的16位程序都无法全屏运行而已。。。。

如何在64位系统运行masm5


方法一:可下载“GUI Turbo Assembler v3.0.1”软件安装即可,它支持tasm4.0。
方法二:安装“dosbox0.74”软件,在该软件虚拟的16位dos环境中可运行masm5。

为什么用masm5.0编译器将源程序的文件不能得到目标文件


用这个东西编译时,要把源文件保存为.asm后缀
然后在盘符输入masm5的所在路径
如在D盘下
d:\mams5》
编译时就
d:\mams5》masm 你的ASM文件名;
只要名,不需要打后缀
就可以生成OBJ文件了。

编译成功的汇编源代码,用masm5编译时出错,如下代码


SHR AL,4 移位指令中的移位次数要用CL,不能是立即数
MOV CL,4
SHR AL,CL
另外:
JB C2
ADD AL,07H 这里应该是ADD AL,37H 吧
C2:
ADD AL,30H

关于masm的使用


masm,就是汇编编译器啦!不过也有点过时了,因为毕竟是命令行式的,不过我用的是。。。
用法如下:
Masm5的话,在masm5目录下键入masm 文件名 回车,然后连续回车三次。
然后在键入link 文件名,再连续回车。。。然后生成exe文件(前提是你写的是对的)
Masm6简单些,在masm6目录下键入masm 文件名 回车,然后连续回车三次。就自动连接生成exe了。

masm5怎么用多个段的代码


下面是多个段的框架。data segment
s:
data ends
code segment assume cs:code,ds:data
start: mov ax,code mov cs,ax mov ax,data mov ds,ax另外,VC中*(int *)0xb8001=5;是向内存中写入4个字节,其内容为5。但是0xb8001的内存地址未必有效。
code ends
end start

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部